If not, how does the wallet know which address format I want to recover? The same private key can be used for all three address formats. As HCP found, if all addresses are empty, the app will recover the legacy address? But what if all or 2/3 have inputs, what then?
The possible options are that you specify which type of address you want to recover such as you do with Electrum, that it scans for one or more active addresses as is partially the case here with BlueWallet, or it just imports only a single type of address, as I believe is the case with blockchain.com web wallets only importing legacy addresses.
In terms of when 2 out of 3 have been used (this will be a very niche case), then looking at the code I linked above BlueWallet won't find them all. It first scans for an active P2WPKH address, and if found, imports that one. Only if the P2WPKH address is unused will it then scan for a P2SH-P2WPKH address, and only if that is also unused will it then scan for a P2PKH address.