One of the key reasons we decided to utilize Cloudflare as our vendor for WAF and CDN was, that they uniquely offer to run SSH (or any TCP application, really) and HTTP(s) on the same hostname.
The point of argument here was, however, the usability side. We offer our SSH services on port 22 on gitlab.com and HTTP(s) on 80/443. We do not want to change this. Because if we did, we would need to tell everyone to use a different URL to check out projects via SSH. And that is out of the question.
And to be honest, the complexity on our end is limited. And for the complexity within Cloudflare to handle routing, etc., we pay them. We will also work with them do debug any connectivity issues a client might have.