Sonoff Zigbee devices need re-pairing every few months

I have a ZHA setup with a Zigbee Sonoff 3.0 USB dongle directly connected to the RPI running HA.

My Zigbee devices, buttons, sensors, etc. generally pair without problems and work for months until HA eventually stops receiving events.
When this happens, I cannot repair the device, instead I have to go to developer mode, call zha.remove with the device IEEE number and then I can pair it again and it works for some number of months again.
I just had one of my SNZB-01 buttons do this to me. No reaction when pushing it, nothing happens if repairing, but removing the device and then pair it brings it back to life.

While I can live with this procedure, it would be nice if I did not have to do it.

Since the whole setup works fine most of the time, I would prefer not to make too dramatic changes, but some little config change that solves this problem would be nice.

What is the technical explanation for the loss of communication?
Also, if there is no easy fix, is there a hard fix (like dropping ZHA)?

Is there a pattern with the devices, like are they battery devices, or are they from the same mfgr?

They are all Sonoff. I have believe I have observed that if the battery gets weak I may have to do the delete device routine. Since the devices run for months without losing connection it is hard to spot a clear pattern.