<p>Always was interested why are <a href="http://msdn.microsoft.com/en-us/library/system.array.sort.aspx" rel="nofollow noreferrer">Array.Sort()</a> and <a href="http://msdn.microsoft.com/en-us/library/system.array.indexof.aspx" rel="nofollow noreferrer">Array.IndexOf()</a> methods made static and similar <a href="http://msdn.microsoft.com/en-us/library/system.collections.arraylist.sort.aspx" rel="nofollow noreferrer">ArrayList.Sort()</a> and <a href="http://msdn.microsoft.com/en-us/library/system.collections.arraylist.indexof.aspx" rel="nofollow noreferrer">ArrayList.IndexOf()</a> are designed as member methods. Thank you for any ideas.</p>

In my view Array class is basically a class representation of the fixed size arrays that we declare using [] in program (you can draw the analogy like int has it's class (structure) representation as System.Int32).
Also Array class does not contain the actually array data in any instance variables but it provides just static utility functions which can be utilized to do sorting and searching in the declared fixed size arrays.
On the other hand, ArrayList is a collection class, which provides dynamic size array implementation and it has it's own data-structure to contain the data. Therefore the said methods are instance methods, so that they can work on the that particular instance's data.