Все оправдано. Свои модели на каждый модуль делают эти модули более независимыми. Представьте, что есть класс User. В модуле, который будет тянтуь этого юзера из сети, класс User будет парситься из json(т.е поля класса будут помечены всякими аннотациями и будут иметь static методы парсинга). Далее этот юзер сохраняется в базу(скажем, мы используем ORM и класс User будет наследовать базовый класс ORM). И в заключении этот юзер будет показываются в UI. В итоге у нас 3 разных модели одной сущности, которые нихера не знают друг об друге. Вдруг поменялся формат ответа сервера с json на xml - вы меняете только одну модель, остальные 2 остаются нетронутыми. Вдруг захотели поменять ORM либу- меняете ORM модель и остальные 2 остаются нетронутыми.