this would reduce the size of the mempools, and make it easier to run a node, and save space on the blockchain. It could be done like a difficulty adjustment where the minimum fee increases if the average block is >90% full, and decreases otherwise.
I definitely prefer leaving fees purely up to the market. Let users decide based on their time preference. If someone is willing to wait days, weeks, months (if need be) for a 1 satoshi per byte transaction to confirm, why take that away from them?
Full blocks are the normal state of the network, so this is just a way of arbitrarily increasing fees at every difficulty adjustment. I also don't think this would really achieve the goals you mention.