Вообще нехорошо возвращать более чем интерфейс, но это вопрос философии
Я бы сказал, что это зависит от многого и особенно это библиотека или какой-то свой код. При библиотеке (public API) лучше возвращать абстракцию, чтоб легче было изменять свой код без BC, при своем коде возвращать конкретную реализацию, так как это дает больше возможностей, как бы, ты знаешь реализацию и что там есть (дополнительные методы).