I've been meaning to give Zulip a try. How many users can it handle?
Less importantly:
What would you say its biggest missing feature is vs Slack? And conversely what does it bring to the table that Slack can't touch yet?
I'll field the latter. I've used both Zulip and Slack in small team (5-20 people) settings and I much prefer Zulip.
In particular I like how the zulip UI is single-stream by default. Messages from different channels are interleaved, so you can read all new messages at a glance, but still well separated by visual elements including color - I don't find it confusing. And I can focus down to any particular channel , or reply to that channel, in one click.
It goes all-in on this "many streams, one view" model with the concept of topics - lightweight "subject headers" for individual sub-streams of a channel. This neatly avoids the "two conversations at once" problems that can occur in other systems occasionally.
Some more minor points are a wider range of markup available than slack (including syntax highlighting for code), and better support for short-lived private groups (ie. "a PM between Alice, Bob and Charlie")
As to what I think Slack does better: More one-click integrations (and likely other backend admin stuff that I don't see as a simple user). AFAIK Zulip doesn't have an irc gateway. Also when I last used it (over a year ago) Zulip's mobile client was quite poor.
I'm sure others can come up with more differences - to be honest I tend to treat slack as "slightly smarter irc" so I don't pay attention to all the bells and whistles.
Finally I should caveat that these same features I like are things people dislike about Zulip - it's more dissimilar to existing solutions and people will always have their preferred ways of doing things. I personally find Zulip amazing for me.
FWIW Zulip does have a beta-quality IRC gateway (bots/irc-mirror.py); anyone interested in working on improving that should check out this issue: https://github.com/zulip/zulip/issues/249
I especially like the concept of topics in zulip. It helps maintain different subjects in a given channel, which is way more readable imo. I'm a big fan.
Other answers address the big user experience advantages (e.g. threading) that it has over Slack, but there's a bunch of smaller features we have that I don't think Slack does (e.g. you can configure regular expressions to automatically linkify patterns like T123 to link to your bug/ticket tracker).
In terms of features Slack has that Zulip doesn't, I think the biggest ones are features that Zulip has today on zulip.com (which isn't taking new users) but you can't easily setup for your own Zulip server (e.g. the Android app doesn't support talking to a custom server without patching it yourself, mobile push notifications aren't available with your own server, etc.). Contributions on those things are welcome -- they're all relatively easy problems for someone with some mobile experience.
In terms of features that aren't just missing configuration in the run-your-own-server model, I'd say the biggest one is that Slack has a really slick onboarding experience and it has more slick integrations. It's hard to compete on onboarding with a company with like a hundred engineers, but I don't see the integrations piece as being a long-term advantage for Slack -- they're easy to write and I expect the open source community to produce a lot of them for Zulip over time.
IMO, push notifications for mobile applications is a big hole. It's not an easy problem to solve, but as of right now I believe you have to release your own flavor of the mobile applications for this to work.
Less importantly: What would you say its biggest missing feature is vs Slack? And conversely what does it bring to the table that Slack can't touch yet?