См. Определение System.Array class
public abstract class Array : IList, ...
Теоретически я могу написать этот бит и быть счастливым
int[] list = new int[] {};
IList iList = (IList)list;
Я также должен иметь возможность вызывать любой метод из iList
ilist.Add(1); //exception here
Мой вопрос заключается не в том, почему я получаю исключение, а в том , почему Array реализует IList ?