To add to this, I think it might be better if the protocol was private by default but allow the sender to choose the level of disclosure and the recipient to publish (as part of the address?) what levels are required (so a sender can’t submit a payment whose disclosure level doesn’t match the policy set by the recipient - the transaction just wouldn’t happen as the miners would enforce this and reject the TX).
That would allow the protocol to be flexible to accommodate different use-cases depending on the jurisdiction the payment falls under and allow recipients to be compliant (as the protocol implicitly rejects transactions that don’t match the recipient’s chosen policy). The same protocol can thus be used across many different jurisdictions and anti-money-laundering regulations.