Wouldn't the mains frequency be a common clock source, if nothing else?
But presumably these lights at least have battery backup, given the obvious risks in case all of them were to fail at the same time due to a grid issue.
Yeah, the mains frequency qualifies, if you explicitly use that.
(Doesn't solve the problem if you want them to be in sync phase-wise, i.e. blink at the same time or similar, but at least they won't drift apart, which was what this is about.)
You could still sync with that signal because it's not perfect.
For example, say you have a scheme where a period longer than the last one is symbol A, about the same period is B and shorter is C. You will get a random-ish sequence of symbols.
If you have an algorithm that, say, resets the timer to zero whenever a certain symbol sequence is detected, you can eventually get back in sync. With some care you can make sure you only sync when the sequence happens and the light has only been off for a short period to avoid excessively long off periods or truncated on periods.
Then you just need to have a local oscillator good enough to do that timing analysis and that can maintain sync between these symbol occurrences.
You could do it on the tiniest micro. Once you've counted the zero crossing detector, these days you might save 3 to 5 whole dollars over a GPS receiver on your very expensive ICAO compliant lamp and also ruled out using DC into the bargain! And theoretically it desyncs when the grid is too stable for days on end (and you just get BBBBB or ABABAB for millions of cycles)!
In terms of what is actually used, they do often use GPS and many of them have MODBUS or similar data connections which presumably wire into the wind turbine's telemetry somehow for fault detection.
It is entirely self-contained (but needs zsh, not bash, for dumb reasons). Terminal at 90 columns works best.
It is just a very simple integer LFSR as a random number source, followed by a hand-made integer IIR filter (manually placing poles on the z-plane). All of this entirely with trivial integer operations only (effectively using 32 bit fixed point arithmetic)
So without any external input or tools at all, and not even using zsh's $RANDOM, it makes an "analog" weavy pattern.
But presumably these lights at least have battery backup, given the obvious risks in case all of them were to fail at the same time due to a grid issue.