Jamis,
I don't know if this reply will be much help, but after reading this thread is seems to me that one aspect of your problem has not been mentioned. The purpose of any generator is to create something viable. For example, when generating a character, you want that character to be effective (able to affect the campaign world in a useful manner) and survivable. Certain combinations of abilities, skills, feats, etc. are more effective than others.
Any useful generator would have to possess a mathematical model of "effective" - in essence, a goal to achieve. The user inputs certain limits on the generator (race, class, level, or whatever) and the generator tries to reach as close as it can to an optimal result. Since certain aspects of almost any generator are random (ability scores, hit points), the generator would theoretically never generate a 100% match to "optimal" - it would simply try to achieve the closest match, within the limits of the user's parameters and the random factors.
It seems to me that creating such a model of "effective" would be extremely complex - probably requiring a number of algorithms to take into account the common sense used by all game creators. Once created, however, users could conceivably add or modify the material, simultaneously modifying the values for "optimal". For instance, a 3E campaign that eliminates the sorcerer's limit on spells known, without making any other changes, should increase significantly the value for being a sorcerer vs a wizard. The program would then tend to generate many more sorcerers than wizards.
An example of using values in a related way is the anti-spam program written by Paul Graham. He assigns values to various text found in email messages, prioritizes them, then has the program search for, and add up, the values. He's able to identify spam something like 99.5% of the time using this method. Here's the link to his article :
http://www.paulgraham.com/spam.html (If anyone is curious, I found this article through Infoworld.com). In effect, he's identified the components of something he doesn't want (spam) and the program tells him if it exists. A generator would check combinations for what it wants (optimal) and keeps trying until it gets reasonably close.
Again, not sure if this helps, but I thought I'd throw it out here.
Good luck!