I remember there was some regression in this layer between OH 2.5 and 3.0 which affected zwave and other bindings, it started with this: removed ThingLinkManager and with it the auto-linking feature and "Simple Mode" by kaikreuzer · Pull Request #1385 · openhab/openhab-core · GitHub.
The framework behavior was not strictly defined prior this change. To be fair, it is still is not defined how many times channelLinked
method of a thing handler should be called. Is it only upon very first creation of link, each creation of link (i.e. not called again when unlink/link cycle is made)? Maybe on each creation of a link, but also after framework restarts? The OH 2.5 behavior was like the last one, channelLinked
method was called always when link channel was linked to an item, and always during “cycling” of these (unlink/linking again) letting binding rely on linkage status to poll data. Sadly it was decided to change which caused several bindings to suffer, zwave including. There is still discussion of what to do with linking: https://github.com/openhab/openhab-core/issues/1707 (be aware, this discussion is over 3 year old).
If you look at last link there was fix for that in 2020 which should address this issue with zwave binding, but it could be that you just found a severe bug.