Fly America is part of it. The other part is taxes and airport fees outside the US. In particular code shared Asia and intra-Asian flights. Overall they make it cheaper to fly a smaller number of flights on the largest wide bodies, vs more flights by different carriers on medium sized metal.
If you changed the ways taxes and airport fees worked in the US then code shares would actually be a good thing in the US. Three are a lot of routes between large cities where we have almost every major carrier (and several minor) carries on an absolutely huge number of flights on really small metal. Instead of 8 carries doing 40 flights, you could do a 4/4 code share, 20 flights. That's still a lot of competition and you'd end up with less pollution, and even better, less congestion. Less congestion, shorter flights, less chance of delays.