The first pattern that you mentioned actually has a name. It's called the "Reactor" pattern, which transforms a select/wait polling based events monitoring into event driven callbacks (I wonder if thats why its called reactor). The reactor (main components) does all the dirty pollling job and you can simply tell it to fire an event when something happens. http://en.wikipedia.org/wiki/Reactor_pattern
Coming back to the question of which is more important, well it looks like you will alwaysd need a worker thread, be that for the reactor or the process monitor thread (unless the reactor is itself using event driven API). If that is the case then the benefit of reactor are more obvious if you have many many events to watch at the same time, like say in your case if you have to monitor dozens of processes/mutexes then a reactor saves you the cost of a thread per monitor.
On the other hand, if its just a matter of a single worker thread then why add complexity when you can easily manage things with a monitor thread? It's sure is ambitious and tempting to go with sophisticated designs (especially when you have arrived at one yourself); I can understand the urge :) but mind it, reliability, ease of use and maintenance are more important than fancy design. After all, your user doesn't care whethers its reactor based design or not.
I suggest that you post further details, especially with respect to scalabity prospects. Like, how many objects can you be watching at the same time (max), how many processes etc.
Hope that helps ...