Nevermind, looked through the source and yep, Array's have to be on the path. So to get around that I made a lightweight ObservedArray class, you can grab it here if it's useful to anyone else who, like me, made pretty heavy use of Array.observe.
https://github.com/hobberwickey/observables
basic usage:
var arr = new ObservedArray(),
observer = arr.observe( function(splices){ console.log('cool right?', splices) } );
arr.push("observed!"); //will output "'cool right', [{index: 0, removed: [], addedCount: 1}]"
observer.close(); //removes the observer
You can also batch calls so you don't have to call the observers after every push, pop, etc...
var arr = new ObservedArray(),
batch = arr.batch();
batch.push("no observers run");
batch.push("until you flush");
batch.flush();