Just had a quick look at the Ruby source and it looks like it doesn't compare the hash but uses the key object's == method to identify the right key. So to test the theory I did some experiments:
2.0.0-p247 :010 > test = {}
=> {}
2.0.0-p247 :011 > a = [1,2]
=> [1, 2]
2.0.0-p247 :012 > test[a]
=> nil
2.0.0-p247 :013 > test[a] = 'cool'
=> "cool"