If banks could make a profit giving poor people bank accounts, they'd do it. Moreover, there is tremendous competition in the check-cashing market. Walk down a street in Baltimore and you'll hit one every few blocks. If one of those shops could get more of the market by charging lower fees than their competitors, they'd do it.
Focusing your ire on check cashing places is the archetypal example of a bullshit solution crafted based on emotions rather than rational analysis. Forcing check-cashing fees below the market price is just going to reduce the number of check cashing places, taking away options from people who need them. Any real solution is going to either require the government writing a check e.g. by subsidizing bank accounts for poor people, or reducing regulation to lower the transaction costs in check depositing and withdrawals.