Прямой ответ на ваш вопрос: ОБА! :)
Просто создайте архитектуру MVP, а затем создайте каждый VIEW, используя UiBinder. Это то, чем я занимаюсь, и это отлично работает. UiBinder может быть присоединен к любому классу, который вы хотите, если он имеет то же имя, что и ваш класс. (Пример: YourView.java + YourView.ui.xml)
В документе GWT есть учебник, объясняющий UiBinder, хотя в нем пропущено много важных моментов.
Я скоро опубликую проект с этой архитектурой в коде Google, используя GPL. Если вам интересно, я могу добавить URL-адрес здесь, когда он выйдет, чтобы вы могли получить прямой пример того, как они работают вместе.
Я также предлагаю вам использовать ClientBundles для всех ваших CSS и изображений. Если вам нужны аргументы по этому вопросу, в GWT есть много учебников по ClientBundles. Я также отлично интегрировал их с моей архитектурой MVP + UiBinder, и это работает как шарм. Единственная проблема здесь в том, что в руководстве ClientBindle отсутствовало много важной информации, поэтому мне пришлось много поиграть, чтобы он работал идеально.
Для каждого ВИДА я бы всегда использовал UiBinder. Но для некоторого простого Composite (самодельный виджет) я бы сказал, что иногда лучше использовать прямой javacode, как сказал Chris_l.