На самом деле вопрос довольно филосовский.
Первый вариант — самый популярный, а мы знаем что по статистике, хоть это и не точная наука, самое популярное — это самое лучшее. Реализовать первый вариант будет легче и быстрее. Ну насчет быстрее тут конечно можно поспорить. Глобально пользователю без разницы как будет для него генерироваться форма, это уже сугубо лично Ваши предпочтения.
Второй вариант — довольно интересный, но я сомневаюсь, что я пошел бы таким путем, мне кажется это неоправданная по затрачиваемым ресурсам задача. По поводу движков которые умеют заниматся такими вещами — это ExtJS и если не ошибаюсь — Prototype.
И все же мой Вам совет — решайте эту задачу по пути № 1, потому что это проверенное решение и оно 100% работает :)