During my first attempt at home automation, I used to mess around with flashing custom firmware onto WiFi devices (Tasmota, ESPHome.) It was a huge pain whenever the hacking process stopped working (tuya-convert), and I had to open up the device, solder some wires, and flash the chip via USB serial.
Nowadays I can just buy any Zigbee product I want (usually from AliExpress), and get it set up in zigbee2mqtt without any extra steps. And it's all local within my home, and no hubs or cloud services required.
I think Zigbee is better for me because I have a lot of battery-powered devices, such as sensors for motion, door contacts, and temperature/humidity. I'm really impressed that the button batteries usually last for 1-2 years.
On the other hand, Zwave radio spectrum varies depending on region, so you need to be very careful that you don't spend hours troubleshooting something that doesn't work because it's a device intended for the EU market instead of US.
IIRC, Zigbee is better here.
I have a handful of Aqara sensors that constantly dropped away, so I just flashed an XBee with router firmware and have it on a small USB battery that stays plugged in. That way power outages won’t cause issues with the “leave and rejoin” request that routers will issue to aged-out devices, which my Aqara devices seem to balk at.
The one nice thing about it, above Zigbee, is that you can expect devices to work together. With Zigbee you frequently have to pair a device with a hub from the same manufacturer.