it's like a transaction in that it's all or nothing if a module aborts a package, but more importantly, it exposes what's about to happen in regards to a deletion where it matters most -- to module code that may have something to say about it. i don't think a transaction solution alone would be as complete, not to mention (i think) that the majority of installs use MyISAM, where no transactions are present.