It does seem that the sweeper approach is more straightforward -- instead of an external script having to POST to an oacs page to communicate you just have one scheduled proc. Moving code out of nsd creates a whole new layer of complexity and IMO the case for it here isn't very compelling.
I've never noticed a problem with scheduled procs running too often and I'm pretty sure I have at least a couple running every 30s now... Just move any procs that take so long that they're confusing the scheduler into their own thread.