Ich sehe den Vorteil eher auf der nicht-GC Seite. Dort kann man konkret testen und debuggen.
Während mit GC einfach jedes tote Objekt lustig weiter verwendet werden kann.
Dieses "sich keinen Kopf machen müssen" mit GC halte ich für eine reichlich naive Sichtweise.
Wie schon andere gesagt haben, nein, so funktioniert ein GC nicht. Der GC weiß, welche Instanzen noch in Gebrauch sind (mindestens eine Referenz existiert noch). Genau aus diesem Grund gibt es auch in C#
WeakReference.
Außerdem ist der GC etwas schlauer als das simple RefCounting, was
COM Interfaces praktizieren (zirkuläre strong references = memleak).