The cleanup performed by with-disposal and with-destructors runs on normal return or when an error is thrown. Directly restoring a continuation with continue or continue-with replaces the stacks without unwinding the scopes it leaves, so their destructors do not run.
Keep the disposal scope outside the continuation capture when possible. Returning to that continuation can then leave the disposal scope normally:
resource [
[ nip continue ] callcc0
drop
] with-disposal
Here, the continuation restores the resource on the data stack, and the quotation returns through with-disposal. If a continuation must escape the disposal scope, arrange explicit disposal before leaving it. Do not resume a continuation that would use a resource after it has been disposed.