It's software with many moving parts, it uses PostgreSQL, Redis, memcached (!) and RabbitMQ (!!). That's at least two more than you'd expect. All these have completely different cluster architectures. Point in time backups isn't trivial either. This makes things like HIPAA requirements harder to implement.
The official way to install it is to run a sprawling Puppet manifest, which is dependent on a number of other tools to do the work. How do I store this in an existing configuration management system? How do I connect to existing databases? Those DBAs were hired for a reason. The documentation on that is less than ideal.
You'd better run in on the recommended Ubuntu version, any deviations will cause the above procedure to explode into a ball of mud.
There is a Docker image, but it's not stable yet, and upgrades become a bit unclear. It would also mean running all those databases inside a K8s cluster, again with their own ways of doing clusters, backup and maintenance.
The kind of organizations which needs to run things on-prem, and will glady pay for the privilege, are also the kind of organizations which have streamlined processes, sysadmins and DBAs and there Zulip isn't a great fit. It seems to be decent software otherwise with some great and unique features.