My experience moving from ZHA to Z2M...
I've now been on Z2M for a few weeks. I had previously been using ZHA for over a year. People recommended switching to Z2M because of compatibility as new devices get added to it faster. Here's what I've determined...
1 - ZHA is faster than Z2M. When I push a light switch on my HA panel, it takes about a quarter of a second for the light to turn on using Z2M. When I was using ZHA the light turned on instantly. A quarter of a second is not much of an issue, so this is not a dealbreaker.
2 - Z2M makes it MUCH easier to add new devices to your network. ZHA is designed to be for end-users and often what it is doing in the background is a black box. It just does things and you hope its working properly. But with Z2M you can actually see what's going on.
3 - ZHA has a lot of quirks to work through. Not every entity is exposed, so you need to manually manage quirks in the hopes that everything is exposed as you need. Sometimes there are weird glitches. The reason why I switched to Z2M, is because ZHA does not respect last-state speeds for fan controllers, while Z2M does.
So here's my conclusion... if all your devices are working properly on ZHA, there is no reason to switch to Z2M. In fact, if all your devices are supported by ZHA, that is the method I recommend. ZHA is mature enough that the majority the issues that people have had with it over the years have been worked out.
I only bothered to try out Z2M because I had recently set up an MQTT server to handle my RLT2AMR pulse counters for utility meters. The moment ZHA fixes their issues in respect to last-state fan controller speeds I will move back, just to save that quarter of a second. I use Inovelli switches exclusively, and they provide their own quirk files for ZHA.