Это принцип использования наименее определенного типа, который вы можете выбрать. Конкретные или конкретные типы являются ответственностью, поскольку они с большей вероятностью раскрывают вещи, о которых вызывающие абоненты не должны знать, и их с большей вероятностью необходимо будет изменить (делая их деталями реализации).
В этом случае, если вы всегда возвращаете ICommand, вы можете изменить базовый тип команды, не прерывая вызовы. Вы также можете ожидать, что вызывающие абоненты не должны будут знать больше о том, что делает ваша функция, чем они на самом деле должны знать, что означает, что они с меньшей вероятностью нарушат принципы ОО.