Here's the scenario: we have a cluster with primary A and backups B and C. There is a queue Q that is replicated to both. Now A dies and B takes over as primary. Before C has connected to B, a client destroys Q and creates a new queue with the same name, Q. When C does connect it sees a queue named Q and mistakenly assumes it is the same queue as it's own Q - so it has an incorrect replica of Q. The same scenario applies to exchanges.
The fix is to tag queues and exchanges with a UUID, so backups can identify that the queue has changed even if the name is the same.