Consider an encrypted message $M encrypted with session key $K, which is wrapped in a PKESK encrypted to public key $X.
This command will always produce the cleartext:
gpg --override-session-key=$K --decrypt < $M
but it will return a non-zero error code if the current GNUPGHOME doesn't know anything about $X.
I think this return code also causes gpgme (gpgme_op_decrypt) to think that the message was not successfully decrypted, even though it was successfully decrypted. This results in a cascade of unncessary failure further up the stack, as the tools that use gpgme try to report the "error" to the user.
I think if the decryption succeeds this should result in no error, just like it wouldn't be an error if there is another PKESK that you don't recognize.