Array-like objects are typically implementations of APIs that are defined in a language-agnostic way.
This allows them to be implemented in multiple languages. For instance, getElementsByTagName
is part of the DOM specification and has a Perl implmentation.
Since the specification doesn't define the object as having all the properties that a JavaScript array would have, it can't be implemented as specified by using an array.