Reference counting would seem to be much quicker to remove stuff than a mark-and-sweep garbage collector, as things can be freed and the memory recycled as soon as it is no longer used. The problem that mark-and-sweep aims to solve is catching circular references, but in exchange you have to walk the entire object tree, and everything else has to pause while this happens.
Wouldn't it be better to keep reference counting, and use mark-and-sweep periodically, only when memory is low? Mark-and-sweep GC pauses are a big pain and hard to predict or avoid. If the engine supported reference counting as well, it could possibly reduce the need for them a lot - even to zero if you are careful to avoid circular references.
I notice that Python uses this kind of scheme, but possibly more for historical reasons than as a deliberate performance decision.