Python (язык) не говорит, какую форму сборки мусора он использует.Основная реализация (часто называемая CPython) действует так, как вы описали.Другие версии, такие как Jython или IronPython, используют систему сбора мусора.
Да, есть преимущество более раннего сбора с подсчетом ссылок, но основная причина, по которой CPython использует это, является исторической.Первоначально не было сборки мусора для циклических объектов, поэтому циклы приводили к утечкам памяти.API C и структуры данных в значительной степени основаны на принципе подсчета ссылок.Когда была добавлена настоящая сборка мусора, невозможно было сломать существующие двоичные API и все библиотеки, которые зависели от них, поэтому счетчик ссылок должен был остаться.