And all three of those parts are why the crypto dream of decentralized payments for all will never come to fruition. It is simply not possible for a decentralized system to have the same convenience and low cost as a centralized system. In the end, any decentralized system will tend to have a centralized layer built on top of it that eventually makes the underlying decentralized system obsolete.
We see this everywhere: in Web 2.0, in Apple's walled garden, in Canonical's dominance in the desktop Linux space, and in the political history of basically any country you can name. Even most people who in theory support decentralization end up in practice choosing the centralized system every time.
Fees are why I haven't moved my ETH after using an exchange to buy some for USD. I don't want to pay the stupidly high costs to move the ETH into a wallet that I fully control. Especially because turning that back to USD so it's actually usable in day-to-day transactions would require paying yet more fees to move the ETH back to an exchange (or to an independent buyer).
Have you had a look at gas prices recently? A transfer costs between 1$ and 2$ depending on the time of the day.
It's still much higher than it should be, and let's hope that will change soon with the merge and L2 adoption, but that's not what I would call stupidly high costs to move the ETH.
A single transfer for ETH maybe but that's also in part because ETH price is low. If you want to move erc20s it costs significantly more And if your portfolio includes many projects it is unseemly. Also a lot of exchanges or at least the biggest one - Binance - have higher withdraw fees in part because they must make multiple transactions to send your money out.