Zwave and Zigbee are not IOT
While they are often lumped into "IoT", the Z devices don't use IP or TCP so it's really hard for those Ts to be on the I. There are implementations of "Zigbee over IP" (aka dotdot on IP) and ZWave over IP, to date neither has seen any consumer adoption, which puts it right next to Thread, which AFAIK is only available on Nest/Google branded devices.
CHIP may change that for Zigbee as dotdot is expected to be part of CHIP. Dotdot is also going to run on top of Thread. At which point Thread is just a networking stack and ceases to be a full automation standard. It will also be useless as Thread devices without relays won't have any more battery life or range than BlueTooth.
The important parts of the Z protocols are the device profiles and the device enrollment. This is the "dotdot" component of Zigbee. It is what allows devices from different manufacturers to work without needing a custom driver/handler. Both of the Zs have fairly comprehensive arrays of profiles already. Both standards also allow manufacturers to add new commands, assuming they aren't just reinventing a wheel.
Part of the reason Zwave has a following is all Zwave devices are certified to follow the standard so for the most part, they are as interchangeable as USB mice.
Part of the reason Zwave hasn't "won" is that certification costs money so devices are more expensive.
Part of the reason Zigbee has a following is that certification is optional and anyone can make anything, which results in very cheap battery powered bits from China.
Pat of the reason Zigbee hasn't "won" is that there isn't just one Zigbee, there are multiple flavors, so it's entirely possible to buy Hue bulbs (Zigbee LightLink) that won't play nicely with your Xiaomi sensors (Zigbee HA).