--sign, the message data is encapsulated in a container which also includes the signature value. The container formally consists in bytes, which cannot all be mapped to printable characters: that's your "binary gibberish surrounding the message". This "container" is what is described in RFC 4880. By using
--armor, you instruct GnuPG to apply Base64 encoding on all these bytes (the complete container, including the contained data) into printable characters. The result is indeed in ASCII (that's the point of Base64), but not immediately readable by a human being: with Base64, any three bytes become four characters.
--clearsign, the message data is not encapsulated in the same kind of container. Instead, it is an ASCII-based container, which consists in:
- A header line (
-----BEGIN PGP SIGNED MESSAGE-----).
- The (mostly) unmodified message data (end-of-line characters are normalized).
- The cryptographic signature itself, which is binary, then encoded in Base64 and equipped with distinctive header lines.
--clearsign option is similar to computing a "detached" signature (a signature object which does not contain a copy of the signed data), then gluing the signature to the original message with some ASCII-compatible headers, so that the original message remains readable to the naked eye. This is the mode recommended for unencrypted, signed emails, so that recipients who do not know or care about PGP can still read the emails.