Why are UTXO locks stored in memory only?
Because it was added as memory-only filter by Jeff Garzik in PR: https://github.com/bitcoin/bitcoin/pull/1861/

It might be nice to store this in the wallet, but to judge interest and review the interface, this is a useful first step.

Couple of users who care about privacy wanted persistency for locking unspents and created issue: https://github.com/bitcoin/bitcoin/issues/14907 but it was closed in May 2020 because of lack of interest and nobody tried changing it with a PR.