Homebrew alert: I created a custom Reincarnate table a few years back.
It looks like this:
<=5 Caster's race
6-10 Target's choice (other than old race)
11-40 Same as old race
41-50 Related race (GM's adjucation)
51-60 Decidedly unrelated race (GM's adjucation)
61-90 Roll randomly among races in the setting
91+ GM's choice
This is all subject to the constraint that the creature's LA and/or HD may not change (except as is normal for level loss).
Clearly, this (describing general results) is a very different approach from the one taken by the default Reincarnate table (explicitly determining races). The reason is that different groups use different races.
Any explicit table either has too few races, resulting in some of the group's races not being included, or too many, resulting in the table that includes races the group does not traditionally include.
The downside is that the spell now sometimes requires a lot more DM input. I think that's OK. Death and Reincarnation doesn't happen that often, and is usually a significant enough event to spend some time on thinking about how to resolve it anyway.
But the biggest advantage I see with this approach is that the spell no longer has to assume humanoids as the target. Animal companions everywhere, rejoice.