Sorry, Paul, that nobody responded to your question.
The truth is...
The problem you ran into is pervasive. And, unfortunately, your solution is all too often the only solution to this problem. Well, that's not entirely true. You could resort to plsql to remove references and dependencies, but it's tedious, frustrating, error-prone, and just plain difficult.
In *most* cases, once you add content (actually, acs_objects and permissions), you're stuck with it until you drop/create the DB. There are several discussion threads in the forums that debate the rightness/wrongness of this "feature". The thing is, if you write your own packages, set up the model appropriately with cascaded deletes and triggers to remove explicit permissions and acs_objects.
As for the existing packages and core, maybe someday this "feature" will be fixed.
You can probably reproduce the error you saw by adding wimpy point content and trying to delete the wimpy point package again.