One of the advantages of self-hosting your 3CX is the option to design the hardware infrastructure to match your specific needs. At the same time, there are fewer restrictions on scaling into very large implementations when you host yourself vs hosting at 3CX. Not to mention the restrictions 3CX places on using Call Flow Designer applications, 3rd-party tools, and reliable access to CDR data.
I would, however, encourage you to carefully consider the need for redundancy when hosting on-prem for a large 3CX implementation. It would be very difficult, if possible at all, to match the redundancy provided by large hosting companies like Amazon and Google. While I am not in a position to comment specifically on the size and redundancy of Amazon's internet infrastructure, for example, I have to assume you would not be able to provide something similar yourself. Further, unless you already have a 24/7 team of infrastructure specialists on staff, providing a similar redundancy for staffing and servers would be VERY expensive.
I had my own hosting facility for decades but eventually found it impossible to argue with the economies of scale offered by the big hosting companies. For example, customer data insurance and cooling costs were starting to approach the combined cost of the building and all my staff. If you do not already have the infrastructure for other reasons, doing this on your infrastructure would be hard to justify.
But, to be clear, "self-hosting" 3CX does not preclude hosting on someone else's infrastructure (Amazon, Google, Azure, etc.). You may find some limitations on how customizable their infrastructure options are, but even if you have to over-build some parts of the infrastructure to get everything you need, it is going to be more cost-effective than doing it yourself.
That's my opinion anyway.