Regardless of whether or not you provide your own SSL certificates, cloudflare still uses their own between their servers and client browsers. So any SSL encrypted traffic is unencrypted at their end before being re-encrypted with your certificate. How can such an entity be trusted?
Because it’s easier and cheaper than setting up your own SSL tunnel securely.
From a non hobbyists point of view, you’re paying for them to handle the messy business of maintaining a secure endpoint on the Internet. The sheer amount of bot crap you get hitting your servers as a result of an open SSL port is crazy. Also you are paying for their services as a CDN, which can significantly improve latency and reduce bandwidth bills.
Most self hosters won’t benefit from a CDN (the volume and global distribution of traffic is too small for it to make much of a difference) or a global internal transit network.
Of course you definitely can set up your own SSL terminating proxy (where you own the box/process that unencrypted traffic goes through), it’s just a lot more money and effort to do well than most would be willing to dedicate to it. But if you’re not ok with your traffic going through a third party maybe it’s worth it.
Just the mechanics of setting up SSL termination is a faff. Not only do you need to set up SSL properly on your app servers, you also have to do the same on your terminating proxy - and keep the certs renewed, disable insecure configurations, patch your SSL implementation. For many, the convenience of this all being someone else’s problem is worth it compared to the privacy implications.
Wut you can easily set up SSL with let’s encrypt and traefik.
What CF gives you that you can’t really do yourself is CDN
And DDoS protection