It's totally different from a withdrawal on the exchange and having a transaction fee on transferring your Bitcoin to another wallet. Less fee for the non-custodial wallets which is you can put manually the fee rather than on the exchange wallet which is expected to have huge fees.
Just simple, those exchange platforms making ridiculous fees is a part of their business which is totally different from the non-custodial wallet.
They don't charge deposit fee (for small input consolidation) but they combine them all in withdrawal fee which they charge both input consolidation, service operation and maintenance as well as withdrawal fee + on-chain transaction fee. They can tell you many reasons why they charge such ridiculous withdrawal fee with which they get benefit certainly.
Some exchanges charge very high fee:
https://withdrawalfees.com/coins/bitcoinIf you know how to broadcast your own transaction, you can avoid such fee. How? Use non custodial wallet, activate coin control feature and observe mempool
Always check the mempool space every making such transactions to know the recent transaction fees.
It will help you to avoid your transaction being stuck and will take too long to confirm, if you are not in a hurry, 1-2 sats/vbyte is enough per transaction.
Weekend days are good to broadcast your transactions with low fee rates.