Well, as I mentioned in my previous post, this is not a big deal from the technical point of view, so Bitcoin Core implemented this, but I use Bitcoin Core solely as a node for Sparrow, which is paired with my hardware wallet, and would not like to see such UTXO mess in a single wallet, so I don't like your idea for many reasons, including fund management. That said, had this been released in Sparrow, I would accept it only as an option, not as the general function otherwise I would move to other wallet.
The beauty is the clarity and simplicity rather then mess.
It's not a mess, the software is smart enough to determine which UTXOs will participate in the transaction. Moreover, in Bitcoin Core you can create a new wallet at any time and use only one type of descriptor/address type.
Another important detail is regarding the remaining balance that goes to the change. In a single-script wallet, where the user created a p2wpkh wallet (segwit bech32 bc1q) and is sending coins to a legacy address, on the blockchain you would see something like this:
bc1q (from your wallet) > 1legacy (recipient)
------------------------------- > bc1q change from your wallet.
Note that for an external observer on the blockchain, it would be easier for them to assume which is the change address in your wallet, especially if the transaction has many outputs where (hypothetical example): there are 09 legacy addresses and only 1 bech32m address (your change addr).
In multiscript wallets like Bitcoin Core, the privacy guard solves this by making the address type of the change address match the output address. The change goes to the same address type as the recipient's address type, so it would be difficult for an external viewer to guess which is the change address in your wallet. And there was already demand for this, the devs merged the PR:
https://github.com/bitcoin/bitcoin/pull/23789Do you don't mind losing your privacy on the network when there are different address script types in a txid?
I don't thing it very organized or smart to have to re-import the same seed phrase 3x or 4x times to access different address types/scripts on my same wallet seed, storing 3 or 4 keystores and flooding the keystore management. This is something many people ignore or don't realize. I'm sure that at some point someone here has needed to do this, most people.
You're also not thinking about the beginner user who doesn't remember which address type they were using to receive payments. They might restore the wallet to a derivation path/address type and see that their funds aren't there, and they become panicked, but their funds are in the same seed phrase, but in another derivation path/script.
There are wallets for all tastes: single-script, multiscript, etc. It's fine if you don't like multiscript wallets, but if they exist, there's a reason, and you can't deny that they' are practical and easy to manage without a mess or confusion when creating UTXOs, both automatically by the wallet and through coin control by the user.
You might not think it's a big deal from a privacy standpoint, but I do.
There are several multiscript wallets such as: Bitcoin Core, Mycelium, Coinomi, Wasabi, Stack Wallet...