amanai,
Потому что переменная j начинается не с нуля а со значение переменной i.
Задача вложенного цикла сделать количество итераций равное количеству букв в переменной myName.
К примеру первая итерация вложенного цикла будет на 30-й итерации цикла родителя то есть переменная i = 30(или 29, не важно). Из этого получается что переменная j тоже будет равна 30 соответственно это условие j < (myName.length + i) мы не сможем записать не добавив к нему переменную i потому что цикл по сути будет выглядеть так
for(var j = 30; j < 3; j++) {}
и он никогда не выполнится потому что j всегда будет больше 3. (За исключением случае когда "E" в переменной text будет в первых трех позициях, но все равно работа кода не будет корректной)
А если убрать +i тогда нам надо внутренний цикл записать так
for(var j = 0; j < myName.length; j++) { //Здесь пишем var j = 0
hits.push(text[i+j]); // Все равно здесь надо значение i прибавлять
}