Im mexican, and while the reason why we are mediocre could fit in 10 pages, im going to keep it short and sweet:
There are two main reasons; Corruption, and mentality.
Corruption: Think about the best south american players history has given us. Pele, Neymar, Aguero, Di Maria, Tevez, Luis Suarez, Ivan Zamorano, Maradona. What do all of them have in common other than being great footballers? They grew up in absolute poverty. They showed talent at an extremely young age and at 5 years old they were playing and wrestling on the pitch against kids twice their age. Naturally they get scouted and they get the chance to make it pro.
In Mexico, that doesnt happen. Check this statistic: 90% of the mexican liga MX players come from the 10% richest cities on the country, and only 10% of the players come from the other 90% (poorer) cities.
Coaches, directors, owners, etc often CHARGE a young player and his family money just to put him on the teamsheet. If a kid wants to make his pro debut often he gets asked money in return, big sums of money that for a really talented but very poor player its impossible to get.
Basically anyone wants to get money, from the team captain all the way to the runners of the clubs.
Thats basicaly the grasp of it, but it gets much deeper than that.
Mentality:
Mexican people as a whole have a defeatist mentality. They may say they are superior or as good as anyone, yet deep inside they dont believe it. When things get tough, mexicans have self doubt.
Also mediocre mentalities. Giovani Dos Santos was a great talent yet he could be seen partying or trying to get girls every weekend, then ended up at MLS at like age 28 or something. Carlos Vela is as talented as any player in the world yet "he doesnt like football that much", was close to signing for Barcelona but he went for the MLS instead, now hes playing like a crack there because theres no pressure there.
Chicharito had the right mentality, yet didnt have the talent the other two did. Btw those three all come from rich families or are related to historical football families on top of that.
Rafa Marquez was our last great world class player, and he too comes from a rich family. Mexican football cant be fixed unless we pull it from the roots and start from scratch, but that will never happen.