This seems to the be the essential point. A character with one of these feats is not going to take the penalty if the target is difficult to hit.
Of course the character is going to take
a penalty. It's just not the one you are thinking off. Because the opportunity cost of the feat is +2 ASI, that means that STR/DEX mod is one less. So every single attack they make, regardless if they are engaging the feat or not, is at -1/-1.
So if the baseline is +2 ASI, then compared to that the feat either gives:
-1 to hit / -1 to damage (when not using it)
OR
-6 to hit / +9 to damage (when using it)
So either you are strictly inferior with -1/-1, or you're getting about +1.5 damage potential for every point of to hit you are losing, but that lost to hit means that you are also gabling the base damage.
Let's try a few examples. I'll start 50/50 and go up and down.
Baseline: Greatssword (2d6 avg 7) +5 (str, magic, whatever) = 12 avg damage
GWF: Greatsword but -2 STR = 11 avg damage.
If baseline has a 50% chance to hit, that's 6 expected damage per attack (50% * 12)
GWF not using it has a 45% for 11 damage = 4.95
GWF using it has a 20% for 21 damage = 4.2 damage
Okay, even chance to hit definitely favors not taking the feat.
Let's try +3 AC harder to hit.
Baseline has a 35% for 12 = 4.2
GWF not in use = 30% for 11 = 3.3
GWF in use is 5% for 21 = 1.05
As expected, anything harder makes the feat even worse.
Let's go -3 AC easier to hit.
Baseline has a 65% for 12 = 7.8
GWF not using it has 60% * 11 = 6.6
GWF in use has 35% * 21 = 7.35
Hmm, GWF is pulling close, but it's still better not to have taken the feat. But at least if you had taken the feat it's finally better to use it then ignore it.
Let's go up another to -6 to AC, make it REALLY easy to hit.
Baseline has 80% for 12 = 9.6
GWF not using 75% for 11 = 8.25
GWF using it 50% for 21 = 10.5
Woo, GWF is finally better!
So it looks like the majority of the time GWF gives you less damage per round then the +2 ASI would, but against very easy to hit opponents it gives more damage. What that averages out to depends on the foes your DM throws at you and how much buffing you receive.
To shoot holes in my own argument, once a character maxes their attack stat and the the opportunity cost is not longer being charged against it, the dynamic changes. Now it's giving you an option without a corresponding cost in that category, so that category improves unilaterally.