When you send a transaction, you get to pick what fee you'd like to use. For this kind of service, transaction speed isn't really important so you can get away with setting a low fee.
Here's a 0.15$ fee transaction that was mined just 6 minutes ago: https://mempool.space/tx/2e66ba1758e233ff1b2395c7db55f8327de...
By "off-chain", I meant something like BuyMeACoffee letting users top up a wallet via an on-chain deposit, and then handling tips internally (e.g., in a SQL database). That way, small payments don't each require a blockchain transaction.