In st-80, the keys did answer a Set and the values a Bag, with no obvious mapping between these two order-wise.
In Squeak, there were historically a fasterKeys that did answer an Array in order to avoid the overhead of testing uniqueness of keys and to avoid rehashing the keys...
Then we decided to simplify everything by answering an Array for both keys and values with the guaranty that (self at: (self keys at: i)) == (self values at: i) for any i from 1 to keys size...
But it's just a conveniency, it was not intended to be generalized...
Also, keep in mind that the order may change at any time with the mutations of the Dictionary...