Mexican here, there are many factors, but the major ones I can think of are: our genetics, the sporting culture, being a developing country and having a relatively rich league.
The sporting culture in countries like Argentina and Uruguay is something not even the US has. The US produce athletes through schools (in most sports), in Argentina & Uruguay there is a big sports club culture, no wonder Argentina is generally good at team sports. Brazil is similar. Mexico doesn't have either the sports club culture, in fact, you can't really find any, and I mean, an actual sporting club, you can pay for some clubs but for preppy people who will not really become athletes at all. And the school system doesn't have the funding to produce athletes like the US, Canada or Japan.
Our genetics and being a developing country go hand in hand, you can see and in most sports, the developed countries tend to dominate. Brazil & Argentina are able to compete via their population, genetics & sporting culture. But we can't forget that Argentina used to be on pair with most European countries at the start of the XX century. Mexicans are naturally smaller, but also grow up with a poor diet (hence Mexican Americans are taller in average).
And well, you all have said it. We have a relatively rich league. It pays better than most small to medium size clubs in Europe so leaving the league is hard. But also, we don't have tons of clubs like actual footballing nations do, so if you're not in Liga MX or the second tier (the third tier and below are U-23 and below semi-pro leagues), there's nowhere else to play at a decent level at all. The top talent doesn't go because they have good wages and the clubs ask too much money, but they also get blocked by foreign talent. Even the J-league has smaller budgets so their players can leave more easily. The USAmericans also have the advantage of having owners from the US in many clubs through Europe.
So that would be my summary, but obviously it's more complex than that.