System.Arrayクラスの定義を参照してください
public abstract class Array : IList, ...
理論的には、このビットを書いて幸せになれるはずです
int[] list = new int[] {};
IList iList = (IList)list;
また、iListから任意のメソッドを呼び出すことができるはずです。
ilist.Add(1); //exception here
私の質問は、なぜ例外が発生するのかではなく、なぜArrayがIListを実装するのかです。