Когда между элементами интерфейса много сложных взаимосвязей.
Если веб-интерфейс можно разделить на простые слабосвязанные кирпичи по типу "нажал кнопку - панелька развернулась, нажал ещё раз - свернулась, и ей чихать, что творится во всех прочих элементах" - фреймворк не нужен.
Если же между ними есть связи в духе "если я нажал эту кнопку, то нужно посмотреть состояние того чекбокса и если он true, то сделать A и B, если false, то X, Y и Z, а потом ещё в соседнем списке что-то отфильтровать и по результатам, возможно, некоторые элементы задизейблить" - никуда не денешься. С ростом количества таких связей объем кода и всяческих проверок растёт экспоненциально, всё запутывается в гордиев узел.