Да, готовая переменная - это единственный путь, если работать со строками. И не только из-за парсера:
a += b
в javascript это полный аналог
a = a + b
, соответственно
innerHTML += x
полностью перезаписывает заново весь код(и заново парсит), так делать нельзя в принципе.
Надо помнить, что вы работаете не с текстом, а с уже готовой DOM структурой, текст парсится по мере прихода с сервера и уже
не существует в живой странице. Методы типа innerHTML - это на самом деле костыль. Правильно же с DOM структурой работать через DOM методы: createElement, appendChild итд.
P.S. Есть метод document.write() который работает именно так, как вы ожидаете, но он работает
только во время загрузки страницы, т.к. плюёт текст прямо в поток получаемого с сервера, до того как он будет распаршен. Соответственно после того как страница уже загрузилась - использовать его невозможно.