The subtle difference is that, with the current implementation, only the message content is encrypted. The sender and receiver pubkeys are not. A DM (nostr event kind 4) looks like this
{
"content": "encrypted string",
"pubkey": "the pubkey of author",
"tags": [
["p", "the pubkey of receiver"]
// it's possible that you include multiple "p" tags so you can DM many people at the same time.
]
}
My proposal is to encrypt the whole original event A in to another event B of which the relay C is the receiver of B.
When C receives event B, C will decrypt it and find the original event A and forward the message.