Я думаю, вам нужно относиться к GWT так же, как к любой другой структуре пользовательского интерфейса, например, к Swing, Cocoa и т. Д. Все, что имеет смысл в этих средах с точки зрения MVC (или других парадигм), также имеет смысл в GWT. Я думаю, что иногда люди слишком увлекаются MVC, и мне нравится, как он работает в Какао, больше, чем в большинстве фреймворков. Вы создаете представление, у вас есть ViewController, который контролирует все поведение представления, а затем у вас есть объекты модели со всеми вашими данными. Я не думаю, что вам нужно быть догматичным в отношении того, где вся ваша бизнес-логика, она просто должна быть там, где это имеет смысл.
С точки зрения подводных камней, главная из которых вы столкнетесь с тем, что GWT - это чисто интерфейсная технология, поэтому технически серверная часть находится где-то на сервере. Я не вижу в этом особого отличия от написания клиентского серверного приложения, которое хранит свои данные в облаке. Разница в том, что GWT скомпилирован в javascript и имеет все ограничения веб-приложения на javascript, так что будут некоторые вещи, которые вы просто не сможете сделать на внешнем интерфейсе. Допустим, например, что вы хотите создать PDF-файл и показать, что для пользователя вы не можете сделать это в GWT, вам нужно вызвать серверную часть, чтобы сделать это за вас. С другой стороны, в приложении Swing вы можете использовать itext и делать это на стороне клиента.