Arrays in javascript are not what you might think. They are defined by the spec to be maps where certain keys (those that are string representations of Uint32 numbers) are treated differently, and a magic property length which is always one more than the largest such key.
They are not necessarily dense - there can be gaps, and any kind of relationship to a contiguous block of memory is purely at the discretion of the implementation.
I presume that your complaint is really about calling such a thing an array, because a 'keys' method is certainly not a further bastardization of what was already in the spec.