For example, let's say two players are making strength-based fighters. One wants to play a half-giant while the other is a halfling. Let's assume a fixed array of ability scores, arrange as desired.
If the half-giant gets a +2 to strength, while the halfling gets a -2 to strength, that arguably results in better verisimilitude. Assuming all other things are equal, we expect the massive half-giant to be stronger than the tiny halfling. It might feel a bit silly for the halfling to be an even match when arm wrestling the half giant.
Of course, that strength penalty might also be less fun for the halfling player, and potentially result in no one wanting to play a strength-based halfling fighter. It can constrain practical character creation, funneling players towards making the same class/species combinations, while penalizing those who make sub-optimal choices for the sake of RP. That said, I've known players who actually enjoy making those sub-optimal picks, so it isn't always a negative.
You could, alternately, represent the half-giant's strength mechanically by other means (maybe they get advantage when making strength checks against smaller targets) but this also has its own pros and cons. Using the example ability above, the half giant is no more effective at making strength checks against a larger target than the halfling is, which might strain verisimilitude for some.
Late to the discussion, so I dunno if this has been brought up yet.
One of the problems here is that the difference between the half-giant and the halfling is that the -2 stat penalty boils down to the half-giant gets a +1 bonus to Strength rolls and the halfling gets a -1 bonus. And logically, if you want to show the difference in physical might, that +1 or -1 ain't doing it. It's what, a total of a 10% difference between the two?
Not to mention, when you get right down to combat, the half-giant isn't going to be doing that much more damage than the halfling--the half giant can use heavier weapons that do more damage, but a Strength and Dexterity of 16 or 18 or 20 have the same bonuses to attacks and damages, which means a halfling can max their Dex and do big damage with a Dex-based weapon. (And don't forget, some dwarfs (still a lot shorter and lighter than a half-giant) and gith (described as tall, but gaunt and lanky) also got a +2 Strength bonus.)
Plus (unless 5.24 changed this) there's a stat max of 20. A halfling, even with a penalty, can eventually get to a 20 Strength. Quite quickly if they roll for stats instead of using a different method and rolled well.
And don't forget that a goliath with a Strength of 20 is 2/3rds as strong as an ancient dragon, because D&D just does flat bonuses; there's no scaling for size or anything like that.
D&D has a problem in that it put everything in advantage/disadvantage to rolls, meaning that if you give the half-giant advantage on Strength-based rolls, they're still going to roll lower than the halfling at times. Now, I'm glad for that because having to calculate a bunch of numerical bonuses is a pain in the neck, but it was helpful in showing some of those bonuses. A half-giant who gets a +10 when performing Feats of Strength is going to generally be much more impressive than one who simply rolls with advantage. Level Up uses expertise dice--an extra d4 (or sometimes d6 or d8) you add to your d20 roll, and are sometimes used in combination with advantage. Same sort of math, but built into the roll.
So I dunno. Maybe there should be different maximums for different stats, rather than a flat 20--although of course there will be problems if a species can have a higher mental stat than others. But there will be more problems if there's a
lowered maximum.
So yeah, there is no perfect answer.