Arrays and Collections are both data types in 4D that store multiple elements accessible via an index. While Arrays have been a part of 4D for a long time, Collections were introduced later, offering greater flexibility
Arrays are more simple and can only contain a single data type, the datatype is specified when declared using the ARRAY... commands like ARRAY TEXT which will create an array that can only contain text values. Elements of arrays are accessible using the index. Arrays can also be interacted using 4D Commands like Find in array or SORT ARRAY.
Collections have more features allowing them to be more flexible. Collections can also contain multiple data types in a single collection such as a mix of text values and numeric values. The elements of a Collection are also accessible using an index. Collections can be interacted with using object notation, collection functions, and 4D commands related to collections.
While collections can contain multiple data types, they can also be used to store a single type of data. This creates the overlap where both Arrays and Collections can be used to store multiple elements of a single data type. Due to the flexibility of Collection, it is not as efficient as Arrays in some cases. Even if a collection is used to store a single data type, it still has the ability to store other types of data. Because of this and all the features of collections it adds overhead when performing similar tasks as an Array.
As such, Arrays are still useful. In cases where performance is crucial and arrays can be used, it might be better to stick with Arrays. In cases where the flexibility and functionality of Collections are more useful, it can be more helpful to use a Collection.