Очередь финализатора существует для упрощения вещей; было бы сложнее без него. Когда GC работает, управляемый код не должен выполняться, иначе весь анализ, выполненный GC, может оказаться недействительным, если пользовательский код выполняется посередине.
Таким образом, когда GC запускается, финализация должна быть отложена, а не выполняться сразу. Запуск его в отдельном потоке минимизирует время, когда виртуальной машине требуется эксклюзивный доступ ко всем потокам, и увеличивает вероятность одновременных действий.