Sigh... I've decided that PyDispatcher is probably the right thing for SQLObject events -- I think it's a predictable and easy-to-understand package for this context, and I really prefer phrasing this in terms of events. But PyDispatcher conflicts with RuleDispatch, because they both use the package dispatch. Not a problem unless you want to use them both at once. Which is certain to happen, since TurboGears added the JSON code I mentioned (that uses RuleDispatch), and also uses SQLObject.
This is annoying. Maybe I'll think again about using RuleDispatch... but I feel unnecessarily forced into the decision.