Внимание, вопрос очень неоднозначный, потому не стоит сразу отвечать что придёт в голову. Я уже чёрт знает сколько времени пытаюсь найти на него более-менее чёткий ответ.
Пока что у меня варианты ответов находятся где-то между «не нужно почти никогда», «нужно для ленивых фулстэкеров, которые даже embedded будут писать на JS», и «готовые решения определяют задачи».
В каноничной форме решаемая задача выглядит как некий вебсает, часть которого полностью статична; часть статична, но пользователь взаимодействует с ним сверх возможностей HTML, например, бесконечный скроллинг со статичным отдельным описанием товара; часть вебсайта полностью диинамична, то есть, корзина покупателя или админка или мессенжер.
Большинство имеющихся решений исходит из полной динамики в сторону статики, то есть, изначально сайт представляет собой пустую страницу, на которой всё генерирует JS в браузере, но при неободимости часть генерации мы переносим на сервер и даже делаем её однократной. Особой технической причины делать именно так нет — причина скорее социальная, поскольку фулстэкера на JS найти тупо проще, и далее решение формирует проблемы.






