Off the top of my head, Matrix clients with full support for E2EE include:
* Element Web (via matrix-js-sdk)
* Element iOS (via matrix-ios-sdk)
* Element Android (via matrix-android-sdk2)
* ElementX iOS (via matrix-rust-sdk)
* Fluffychat (via Dart Matrix SDK)
* Fractal (via matrix-rust-sdk)
* Hydrogen (via hydrogen-sdk)
* Syphon (built into its Dart codebase)
* Thunderbird (via matrix-js-sdk)
* Cinny (via matrix-js-sdk)
* weechat-matrix (matrix-nio)
* weechat-matrix-rs (matrix-rust-sdk)
* nheko-reborn (mtxclient)
* mirage (matrix-nio)
* gomuks (gomautrix)
* ocrcc-chatbox (matrix-js-sdk)
...and a bunch of abandoned ones too, like Riot Android (matrix-android-sdk), Seaglass (matrix-ios-sdk) and Daydream (matrix-rust-sdk).
Meanwhile any Matrix client can speak E2EE if you connect it via the pantalaimon E2EE proxy (powered by matrix-nio).
In other words, the whole "almost every Matrix client out there has no support for E2EE" is really not true - there are loads of them, spanning many different platforms, built using different independent SDKs.