Zobacz definicję klasy System.Array
public abstract class Array : IList, ...
Teoretycznie powinienem być w stanie napisać ten fragment i być szczęśliwy
int[] list = new int[] {};
IList iList = (IList)list;
Powinienem również móc wywołać dowolną metodę z iList
ilist.Add(1); //exception here
Moje pytanie nie brzmi: dlaczego otrzymuję wyjątek, ale raczej dlaczego Array implementuje IList ?