OpenPGP already compresses the message losslessly before encryption, but after encryption the message is base64-encoded. We can hardly do anything about it, because other encodings for OpenPGP are not standardized. There is a binary MIME content-transfer-encoding, but it is not widely supported and can’t be used to re-encode OpenPGP messages: OpenPGP messages are not using base64 Content-Transfer-Encoding, but ASCII-Armoring instead. OpenPGP message is basically a text message starting with -----BEGIN PGP MESSAGE-----
, not a binary file. On TLS level compression is deprecated for security reasons, because of BREACH and similar attacks.
As a result, we end up with gzip compression + 33% base64 overhead.