Normally when a topology changes this is either because an instance joined or left (or because properties change, but that's another topic). And whenever an instance joins or leaves this is triggering a TOPOLOGY_CHANGED as expected.
However there could be the unlikely scenario that from a state (a) an instance joins creating state (b), then leaves relatively quickly again resulting in state (c) - and one other instance in the cluster happens to be so busy that it 'misses' the intermediate state (b) - which means it will compare state (a) with state (c) which it could see as being equal since, well, that it almost is.
But to be correct, the above comparison between (a) and (c) should still trigger a TOPOLOGY_CHANGED event. And that is already possible since (a) and (c) have a differing localClusterSyncTokenId (by definition).
Long story short: the code should treat two TopologyViews with differing localClusterSyncTokenId as different (thus automatically causing a TOPOLOGY_CHANGED as a result)