Задача на циклы в JavaScript?
Улучшать такой примитивный код да еще в отрыве от задачи - бесполезное занятие.  Тем более на таком начальном уровне знаний. 
Поняли как работают циклы? Сможете применить на практике? Все, следующая задача.

А то можно щас начать про потребление памяти при сложении строк, про var/let... Суть то задания не в этом
Задачка действительно простая, но я бы попытался оптимизировать память с прицелом на "sliced strings" - просто как иллюстрация, потому что объемы крошечные.

const full = '#'.repeat(7); // полная строка
for (let i = 1; i <= 7; i++){
    console.log(full.substr(0, i));
}

Если верить некоторым статьям по v8, full.substr(0, i) внутри себя использует тот же строковый буфур, что и full, а не создает новый. Конкатенация тоже переиспользует, но через менее эффективную по памяти структуру. Честно говоря, замеры не проводил )