ArrayList объявляет, что он реализует интерфейсы IList, ICollection и IEnumeralbe.
Почему бы не реализовать только IList, потому что IList также выводится из ICollection, а ICollection - из IEnumerable.
Какова цель такого заявления? В .NET BCL существует много таких случаев.