I think you more or less sum up why hashes are chosen as the index in this sentence:
But the hashes for the descriptors can be so easily computed since the descriptor labels are public information.
The point is that they can easily be computed, and this means that they can be easily verified for correctness without downloading the entire router descriptor from every directory authority (half of the directory authorities must agree for us to think a router descriptor is valid).
Put another way: A hash is chosen instead of the full router descriptor because it's smaller. If we've already got the latest router descriptor from one directory, we shouldn't have to download it from all the others to verify that they are all providing the same description. Instead, each directory authority provides a hash of each router descriptor. If at least half of them are providing the same hash, we can verify our current router descriptor against that hash, or download the new router descriptor if our old one doesn't match (and of course, we can also verify the new one to make sure that we haven't been provided with a bad file).