I want to buy some Zigbee IoT devices, but it looks like I need a Zigbee gateway to access them.
Isn't that a hw thing ?
That question is rather orthogonal to OpenWrt. As far as the host interface is concerned, this (in the sense of the typical zigbee USB sticks, TI CC2652 based or similar) is usually one of the common usb2serial adapters, doing something with this serial device is all the magic (and that's not really within OpenWrt's domain, apart from being able to host docker or qemu-kvm for home assistant and ZHA XOR
zigbee2mqtt).
The easy cop out would be a vendor-specific hardware zigbee gateway (WiFi or ethernet based), those only need wifi/ ethernet connectivity to do their 'cloud based magic', vendor lock-in and questionable privacy, fail-safe practices and service EOL scares included.
tl;dr: there is no short answer, you will have a lot of research in front of you - no, I don't really have an answer either, this is just skimming the top of it (and I kind of stopped my own research at this point).
The general scheme for Zigbee is:
SomeSoftware <-> SomeTransport <-> ZigbeeModule
Where SomeSoftware
is usually Zigbee2MQTT, or HomeAssistant, both of which are usually not run/hosted on OpenWrt.
ZigbeeModule
is (here roughly) similar to a Bluetooth adapter, usually connected via Serial/UART, and often then "bridged" using USB to a host..
SomeTransport
here could be "within the local host via UART" all the way up to "forwarding the ZigBee UART via USB/IP (or ser2net) from OpenWrt over network over 2 proxies via VPN to my Datacenter hosted Cloud host"
As @slh pointed out "Not really an OpenWrt 'issue'", but since OpenWrt is regularly used to 'forward' UARTs (for many differerent purposes) via ser2net (or usb2ip) I figured I'd expand a bit on the previous answer.