Дело не в программистах. В большинстве случаев приходится писать самопальные сборщики мусора, потому что только в runtime известно, когда данные больше не понадобятся. Не всегда самопальное надёжнее и эффективнее сборщика языка. Стандартно делают арены, но арены - такое себе по экономичности и эффективности решение.
Так мы друг другу не противоречим. Любую логику, определяющую в рантайме, когда данные больше не понадобятся, можно теоретически выразить кучей условий вида if(...) delete x - но это сложно, бажно и дорого в поддержке, поэтому народ и изобретает автоматизированные способы типа арен, умных указателей и т.д.