There is a lot of incoherence and inconsistencies in sage
hash functions. Two reasons that might explain the design in
some particular situation
* high hash collisions with tuple of integers in Python
(because hash(-1) is -2)
>>> hash((-1,-2)) == hash((-1,-1))
* speed. With your version the code would create a tuple (admittedly
this is rather fast).