I'll start this off by saying that personally, I enjoy the idea of racial ability score penalties. The concept of a character not just having strengths, but also having weaknesses is something that I feel adds a lot to the game.
However, I also see a large number of flaws with the idea of racial ability penalties. Overall they have the negative effect of pigeonholing certain races into certain classes, thus forcing players to conform to specific character archetypes.
Random ability scores suffer from a similar problem. Again, they add quite a bit to the game, but can result in characters that range from boring to simply unplayable.
So, a solution:
Each class has a “key ability score” and perhaps a range of “secondary ability scores” for a player to choose from. When a player builds their character, after ability scores have been placed and racial penalties applied, if their “key ability score” is less than 16, it automatically becomes 16. If their “secondary ability score” is less than 13, it becomes 13.
I’m rolling up a half-orc wizard (I’m assuming that half orcs gain a +2 bonus to strength and take a -2 penalty to intelligence.
I roll: 14, 12, 13, 11, 8, 14 (standard 4d6, dropping the lowest roll).
I’ll apply the 8, my lowest score, to intelligence, knowing that it will get boosted up. I’ll apply my 11 to strength (don’t need it much, since I’m a wizard), 14’s to wisdom and constitution, the 12 to charisma, and the 13 to dexterity.
Taking into account my racial penalties and bonuses:
Now, assuming that the wizard’s key ability score is intelligence, I can now bump my intelligence to 16, and I have a perfectly playable half-orc wizard!