Популярный пример: применение методов расширения Enumerable к массивам и спискам. У тебя есть массив, ты хочешь его отфильтровать и на выходе получить массив (или то же самое со списком). Тебе приходиться вызывать методы ToArray или ToList в конце цепочки LINQ-методов.
Если бы в языке были тайп классы, а не интерфейсы, они возвращали бы тот же самый тип, к которому их применили. Where для массива возвращал бы массив.
Ну хз хз, если идет цепочка преобразований, как раз не стоит перегенять в массивы промежуточные результаты