This is what happens when you over-engineer things.
IRC is not perfectly good or it would still be used.
IRC doesn't do that, true, but there's a bunch of ways around it.
> saves history, has notifications, search
Trivial to implement in the client.
> IRC is not perfectly good or it would still be used
IRC is still used. Almost everything any fancier messaging protocol does can, and has, been implemented as a client-side feature with little hassle.
... all to save $7/month/person (or less for some competitors like MS Teams) because Slack is, like, too proprietary.
> maintain their own fork of an IRC client in order to implement inline code, images, website previews, etc
These already exist. No need to maintain a fork unless you want to add features that don't exist in it. And since IRC is so trivial a protocol, that's not even hard.
> break IRC's protocol in their client and server to allow text in excess of the maximum line length
You don't have to break shit. Just split lines into multiple messages and piece together messages from the same user when they were also the last one who said anything, or use a character that means "message continues", or any of probably a dozen other ways you could implement that on top of the already existing protocol and that will still gracefully degrade on clients that don't support it.
I'm not saying that a service that takes existing ideas and makes them easier for people to use is bad, I'm saying that the open protocol people are calling for already exists, but because they have tech-brain they'd rather build a completely new protocol because it's more fun.
[0] Not literally, I have no idea what it uses.
Edit: spelling
You can use paid services, or not. It's up to you, but they all interoperate.