передавать через контроллер, но при этом придется совершать в нем множество проверок, типа проверка на уникальность пользователя, пустоту полей, идентичность паролей
Этим вы делаете толстый контроллер. На самом деле форма - это модель. Это страница на которой есть своя логика, и в зависимости от действий пользователя она меняет своё состояние, которое и отображается пользователю.
И вот логика формы реализуется в модели формы, которая в свою очередь может дёргать более глубокие слои приложения.
Таким образом задачей контроллера становится только получение данных из http запроса, засовывание их в модель и вызов у модели одного-двух методов.