Object.Destroy() ist eine Unity eigene Funktionalität, während der Garbage Collector vom viel weiter darunter liegenden Mono durchgeführt wird. Object.Destroy() sagt Unity also, dass das GameObject bzw. die Komponente nicht mehr benötigt wird, Unity kümmert sich auch darum, dass dieses an den entsprechenden Stellen nicht mehr verwendet/verworfen wird, dies beeinflusst aber die Garbage Collection nicht und es ist grundsätzlich nicht möglich, jede vorkommende Referenz an anderen Stellen auf null zu setzen.
Besser wäre es, wenn deine Objekte sich nicht einfach so selbst töten würden, sondern gleichzeitig auch noch bescheid geben würden, dass sie nicht mehr relevant sind. Entweder weist man diesen das entsprechende Objekt (das Teil, was bei dir die Queue beinhaltet) zu und von dort wird eine Methode aufgerufen oder in ihnen wird ein Event definiert und dein entsprechendes Objekt hängt sich an das Event eines jeden, sich selbst zerstörenden Objekts ran.