Оверхед не такой дикий, чтобы не использовать нигде. 95% средней программы не критичны по производительности, так что там можно использовать интерфейсные ссылки. Я вот контейнер набросал, в который добавляю все временные сущности и он потом сам все удаляет. Без всяких try/finally. И финализирует, что важно. В Яве вот прочие ресурсы руками надо освобождать. Т.е. без finally никак.
Для критичных по производительности участков это неприемлемо, т.к. ссылки надо подсчитывать синхронизируя между тредами. В общем, блокировки светят. Да и в "zero-overhead boost::shared_ptr" слабо верится. "zero overhead" и "boost" вообще как-то странно рядом видеть.
По поводу "недокрутили" - Борланд (ну или те кто за них сейчас) уже ввел на мобильных платформах подсчет ссылок для классов тоже. Позже будет и для остальных платформ.
Опциональный подсчет ссылок малореален - будут проблемы на стыке. Да и второй корневой объект придется вводить.