If you are consuming an API that provides an object with a destructor, you are correct, you can determine when destructors will be called.
The issue is when you produce an API that contains objects with destructors. Since you are handing these entities off to unknown code, you cannot ensure that they will be dropped. This was a problem in scoped threads in Rust.