Instead we depend on forms of payment which have latency measured in days (checks, direct deposit) and we process debit card transactions on a delay of hours to days. If you are playing close to $0 it's very easy to make a mistake and then fall below $0. The bank has effectively trusted you not to do this, and you did it, so they charge you a fee as punishment. Except you have less than $0, you can't pay the fee.
If you do this, then your bank might close your account and put you on the ChexSystems blacklist, which will prevent you from getting any new accounts for a few years.
AFAIK ChexSystems blacklisting is pretty much the only reason to be unbanked (except by choice as a form of protest, I guess?) Simply doing proper OLTP would eliminate the weird artifact that is overdraft and entirely sidestep the problem of unbanked people.
After fruitlessly disputing the fees, I simply opened an account elsewhere and changed my direct deposit through my employer, leaving my BofA account in the red. After about two months without issue, my new bank informed me that they would be closing my account because I'd been reported to ChexSystems by BofA and blacklisted. They wouldn't tell me the reason for the blacklisting (though I obviously knew what it was). I was not even allowed to withdraw my existing funds and had to wait for a check to be sent to my home in 7-10 business days.
I ended up getting a TD Ameritrade debit card through a pseudo-checking/brokerage account they offer and have been getting direct deposits there ever since. It was an infuriating and dehumanizing process overall.