気になって調べたけど、内容が同一の配列なら(Array#hashのおかげで)
だいじょうぶみたい。
イメージではArrayだとオブジェクトIDそのまま使うような気が
してたけど、これよくできてるなぁ。
(オブジェクトIDじゃStringをキーにしたら簡単に破綻するけど。)

irb(main):001:0> [1].object_id == [1].object_id
=> false
irb(main):002:0> [1].hash == [1].hash
=> true
irb(main):003:0> [1,2].hash == [1].push(2).hash
=> true

直観的には不安が残る書き方だし(>>653>>661あたりと同じことを思った)
他の言語で同じ書き方ができなくて失敗しそうな気もするから、
自分なら管理用のクラス作るかな。