На мой взгляд, класс Array - это, по сути, представление класса массивов фиксированного размера, которые мы объявляем, используя [] в программе (вы можете провести аналогию, например, если int имеет представление класса (структуры) как System.Int32).
Также класс Array не содержит фактически данных массива в каких-либо переменных экземпляра, но предоставляет только статические служебные функции, которые можно использовать для сортировки и поиска в объявленных массивах фиксированного размера.
С другой стороны, ArrayList - это класс коллекции, который обеспечивает реализацию массива динамических размеров и имеет собственную структуру данных для хранения данных. Поэтому указанные методы являются методами экземпляра, поэтому они могут работать с данными этого конкретного экземпляра.