Я могу вспомнить пару критериев, которые я бы использовал, чтобы выбрать один или другой вариант.
Если набор представлений является или может быть повторно используемым компонентом, показанным на многих экранах, я бы предпочел создать подкласс UIView.
Если контроллеру представлений нужен прямой доступ к ряду представлений, я бы создал их в контроллере. Я пытаюсь сделать пользовательские классы UIView непрозрачными контейнерами, чтобы их контроллеру нужно было взаимодействовать только с родительским представлением, а не копаться в его дочерних представлениях.
Если набор представлений не может представить API, работающий с одной концепцией, например, если иерархия представлений существует только для правильной установки z-индекса представлений, и эти представления имеют дело с отображением несвязанных данных, то я бы снова создал их в контроллере. Подкласс UIView должен отвечать за отображение только одного связного набора данных или согласованно управлять набором подвигов.
Если представления должны быть расположены относительно представлений вне их иерархии, я бы снова высказался за их определение в контроллере.