Всё зависит от разработчика. Если он хорошо знаком с каким-либо фреймворком — то, конечно, лучше и быстрее использовать готовое решение. Если нет, и нужен «быстрый старт» не заморачиваясь на проблемы поддержки, расширяемости и «незаменимых людей» то конечно лучше «с нуля». Тем более что практически у любого программиста есть наработки из которых он довольно быстро соберёт вам несложную систему.
Хотя в конечном счёте если вы расчитываете на сколько-нибудь серьёзное и продолжительное развитие проекта лучшим выбором будет любой популярный фреймворк. На самом деле — любой, так как скорость работы в итоге зависит от рук а не от инструмента. Причины следующие:
— Существующая документация и коммюнити. Избавит от проблемы «незаменимости» в случае текучки в команде.
— Покрытие тестами. Все популярные фреймворки покрыты юнит тестами и поддерживают автоматическое тестирование для модулей.
— Гораздо меньшее кол-во «сокрытых граблей». Это проблемы расширямости и всякие неприятные баги «ядра» системы. В популярных фреймворках они либо решены либо быстро исправляются. В «самописном» коде эти проблемы будут довольно сильно тормозить разрабоку собственно функционала.