I have no idea why you think it'd be acceptable for your server to randomly delete old messages from under you by default - I'd go nuts if my IMAP server or filesystem decided to spontaneously expire old data by default.
However, it's easy enough to flip the bit in the config to do so: https://github.com/matrix-org/synapse/blob/ca2db5dd0c9fc430a.... If this is something that makes you hateful, I'm not sure it's Matrix's problem.
In terms of Element: yes, software has bugs, and we're working through them. weechat-matrix is very usable too, as is FluffyChat and a bunch of others.
IRC's discourse model is asynchronous and ephemeral, so if someone found IRC is enough then one will of course do expect messages to be ephemeral in any IRC replacements. Pretty sure that this is not a majority opinion, but this might be one reason.
That all being said, there are ways to make your rooms drop history if you wish through the config (and I believe it can be configured per room too).
I mean, if synapse got actually working blob storage (S3, etc) support for media, that would make it a far less balooning problem. There is some option there for it and it all ends up on disk still so I assume its a backup strategy
I personally run https://github.com/turt2live/matrix-media-repo/ which is basically a media server written in Go which has lots of bells and whistles for rentention, storage platforms and scaling.
this is not to mention that there is one usable client, element and its buggy on all platforms