I think they make sense for the case of resources that need explicit deallocation, when their lifetime is not tied to a scope (e.g. multiple owners).
An example is a Lock object that wraps a pthread_mutex. It's unreasonable to demand that every object that has a lock explicitly dispose of it; it's simpler to equip the Lock with a finalizer that can dispose of the underlying mutex.