Как правильно реализовывать фронтэнд в 2021?
В современном мире действительно стоит разделять backend и frontend. Везде есть свои фреймворки которые стоит использовать для облегчения разработки. Бакенд обычно имеет только api и этого бывает достаточно. А шаблонизатор twig применяют в этом случае для email писем.

Frontend сейчас разнообразен. Это сейчас больше чем CSS+HTML и небольшой функционал на JS. Более того на Frontend сейчас тоже можно делать микросервисы. Одна страница может работать сразу на нескольких JS фреймворках. Например, меню на Vue, а Navbar на ReactJS.

С точки зрения поддержи и развития вы тоже проигрываете. Ведь большой проект требует узких специалистов, в том числе и фронтенд. Если Ваш фронтенд будет на PHP, то на фронтент уже потребуется фул стек разработчик, что дороже и проблематичнее. Значит сложнее масштабирование и развитие. Да и возникают проблемы монорепозитория, куда все изменения с frontend и backend поступают в один репозиторий, без возможности отделения их. Таким образом ко всем разработчикам сразу попадает готовый проект, который легко скопировать и украсть.

Поэтому, если ваш фронт слишком сложный, то его следует отделить. Иначе вам придётся столкнуться с множеством проблем, зависимостью и сложностью как проекта, так и репозитория.
Ну в целом вы сами ответили на свой вопрос - React или Vue или их братья меньшие прекрасно справляются с приготовлением фронта. Вопрос в том, какой тип "приложения" вы пишите. React/Vue все еще пока не очень дружат с SEO (сейчас меня закидают тапками, но это мое мнение, я его никому не навязываю), поэтому на них хорошо делать фронт для мобильного приложения или фронт админки/cms/erp и т.п. Для классического веб-сайта (сайт компании, школы, сообщества), которому важно SEO - фронт лучше писАть "по-старинке".