Imagine that each txout created by a transaction reduced the permitted block size by— say— 100 bytes and every txout consumed by a transaction decreases its the transaction's effective size by up to 100 bytes per scriptsig (clamped to not result in a negative size for each scriptsig)... and then there was some sanity limit on the real size to prevent silly attacks.
Then in that case the transactions that are creating txouts are effectively prepaying for the space the signatures will take to consume them. This would help a lot with the UTXO bloat. I don't think anything short of utxo expiration of some form can be a complete solution, but if the system worked a bit differently fees would be a much better tool.