The over-engineer in me likes the way Rails 3 does it. That way I can pretend that my code is reusable, as the URL is decoupled from the code that eventually implements its handler.
You don't have to pretend ... it actually is reusable. I don't get what's "over-engineer"ed about it.