АЕ
1) Объект становится мутабельным. Инициализация объекта разделяется на 2 части: создать объект, и засетить все зависимости в нужные поля. Можно что-то забыть, можно обратиться к полю до его инициализации.
2) Вы вынуждены использовать DI-фреймворк для создания объекта, или руками сетить ему зависимости.
3) Список внешинх зависимостей объекта неочевиднен, и смешивается с внутренним приватным состоянием объекта.
Конструктор - наш бро испокон веков. По тем же критериям:
1) Создал объект - и он сразу готов к использованию. Зависимость нельзя "перезатереть" после создания объекта, снаружи её вообще не достать.
2) Берёшь и вызываешь конструктор где хочешь - в тестах, в коде, и никаких проблем.
3) Чёткий список зависимостей, без которых объект в принципе нельзя создать.
Всегда, когда есть возможность, нужно использовать инъекцию в конструктор, а не в поля. "Экономия" на параметрах конструктора делает ваш код менее понятным и более подверженным ошибкам. А если параметров оказывается ну очень уж много, это признак того, что объект надо декомпозировать, или наоборот композировать его зависимости в более самостоятельные сущности.
Поэтому не надо делать Presenter AndroidEntryPonit-ом :)
Надеюсь, ответил. На тему "почему инжект в поля зло" много статей, советую ознакомиться.