The MLS cap is much, much lower.
The MLS and NHL suffer in terms of lacking big avenue TV contracts. The NFL is king of TV revenue and MLB and the NBA don't do too bad either.
I believe it is a self-fulfilling prophecy from the nature of the sports themselves to a large extent. The NFL (and its farm league, the NCAA) are all over numerous networks and have huge exposure. If you like to watch sports, you'd have to work hard to avoid seeing any football. Football as a game is almost perfectly made for commercials and ad revenue. One play may take a few seconds of actual time, then the play is over, play stops and there is a super convenient "down time" to interrupt the game and force feed TV viewers several minutes of commercials. Baseball and basketball are similar. (Ironically, baseball changed its rules within the game to "speed it up", but did not limit the commercial breaks this year.)
Hockey and soccer tend toward the opposite. Once the game gets started, it is continuous action. That action can happen for long periods of time. Hockey does have some planned stoppages for TV (clearing the ice), but soccer is even more extreme in this regard. The clock and how long a duration for any stoppage is simply up to the ref on the pitch. TV has to cram all the advertising in at the halftime, before, or after.
The amount of time that can be sold to advertisers makes certain sports potentially more profitable for TV companies to carry, which increases the competition between networks, which increases the total revenue, which increases the total going to players, etc. That all feeds directly into sports market saturation and drives the popularity wave with the viewing public in a viciously self-reinforcing cycle.