There are exchanges that will recover funds, maybe not necessarily straight away or for free, but recover they will. A bigger exchange should have the resources to account for occasional asset recoveries, and if they don't - they could charge the user for their mistakes, just not 100%

If they don't support DAI natively, maybe they can send USDT for, let's say, 10% fee or so. Not sure how easy it is for them but it will probably decrease the risk a little bit.
I agree that they should charge fees for fund recoveries.
Only for some big transactions maybe. Pretty sure they won't bother with something less than $1k since it is not going to worth their time. And users should be careful in the first place, so it's not exactly their problem too.