1) Один элемент формы может быть пустым, быть пустым с плейсхолдером (в этом случае надо уметь ансетит текст плейсхолдера перед сохранением), содержать данные пользователя из базы, содержать не сохранённые данные пользователя из POST, содержать значение по умолчанию. А это уже текст
2) Ошибки, в зависимости от дизайна содержимое связного с элементом тега label может использоваться при формировании сообщения об ошибке, а вставлять его в каждую ошибку руками не хочется. Банальное добавления класса ошибки к элементу форму и его lable и вывод самой ошибки даст плюс 5-10 строк кода на каждый элемент формы. Если вы хотите делать хорошие формы, то часто нужно дублировать серверную работу с ошибками и клиентскую на JS, а это уже как минимум дублирование сообщений об ошибках.
3) Вы убираете ручную валидацию из кода, размер которой часто значительно превышает размер кода содержащего логику обработки данных из этой формы.
4) У формы кроме сайта может быть представление в мобильном приложении
5) Другие менее значительные плюшки