Интересный вопрос. Я считаю, что вы должны спросить себя, как можно использовать возвращаемые данные. Используя аналогию со старым автомобилем, если у вас был
public AccelerationResponse PressAccelerator(float force) {}
Скорее всего, вы захотите вернуть интерфейс, а не класс. Вы можете интерпретировать этот ответ по-разному в зависимости от определенных условий.
Если вам гарантировано, что ваш возврат может быть использован только так, как того требует конкретная реализация, тогда использование этого класса имеет смысл. Я не уверен в каком-либо общепринятом принципе, но мое практическое правило заключается в том, что если тип возвращаемого значения можно использовать повторно в различных реализациях, интерфейс имеет больше смысла.