Вы делаете библиотеку и один из методов вашей либы возвращает список файлов, для примера. Какой тип вы вернете?
Можно IEnumerable<T>, если этот список формируется динамически (yield return или прямая реализация шаблона). Но если он занимает место в памяти целиком — то смысла в IEnumerable нет.
К примеру, Directory.GetFiles() возвращает string[]. Насколько это правильно? Ведь потом кто-то может модифицировать и написать files[0] = "???". Нарушается сама суть — этот список не подлежит изменению.
Емнип, сами MS в своих Guidelines рекомендовали типа ReadOnlyCollection<T> в общих случаях.
Кто серьезно относится к этому вопросу и что делаете?