Message signing and verification is one of the quirks included in Bitcoin clients, although it isn’t used as much, this quirk can help you in different situations like proving the ownership of an address, proving a payment to a real world vendor or like a simple proof of an anonymous identity and avoiding fraud.
Currently this only works with P2PKH addresses (legacy addresses starting with a 1), leaving out a standard way to do it with P2SH or any different type of segwit addresses. Note that there exist some non-standard implementations with limited functionnality.
Luke Dashjr opened a discussion regarding why Bech32 was omitted from previous P2SH2 improvements.
For those unfamiliar with the concept, the idea is to have the address include the single SHA256 hash of the public key or script, rather than RIPEMD160(SHA256(pubkey)) or SHA256(SHA256(script)). The sender would then perform the second hash to produce the output. Doing this would in the future enable relaying the “middle-hash” as a way to prove the final hash is in fact a hash itself, thereby proving it is not embedded data spam.
Bech32 seems like a huge missed opportunity to add this, since everyone will probably be upgrading to it at some point.