Конечно предпочтительнее использовать constructor injection. Но есть некоторые проблемы.
- Конструктор класса может вызываться в нескольких местах, а не только в IOC-контейнере. При этом по мере добавления в класс все новых и новых зависимостей придется менять все участки кода где вызывается конструктор. В этом случае property injection для некоторых зависимостей выглядит удобнее.
- Класс может требовать так много зависимостей, что конструктор будет выглядеть ужасно принимая все эти параметры.