В ситуациях, с которыми я обычно сталкиваюсь, я редко использую IList напрямую.
Обычно я просто использую его как аргумент для метода
void ProcessArrayData(IList almostAnyTypeOfArray)
{
// Do some stuff with the IList array
}
Это позволит мне выполнять общую обработку практически любого массива в .NET Framework, если только он не использует IEnumerable, а не IList, что иногда случается.
Это действительно зависит от того, какая функциональность вам нужна. Я бы предложил использовать класс List в большинстве случаев. IList лучше всего подходит для случаев, когда вам нужно создать собственный массив, который может иметь некоторые очень специфические правила, которые вы хотите инкапсулировать в коллекцию, чтобы не повторяться, но при этом хотеть, чтобы .NET распознал его как список.