The idea of lazy observable generation is one that I've thought about, but I think it's secondary to getting the core functionality in place. It looks like the implementation is coming along and could be quite nice. Here's a couple of things left:
1. Handling of array indexing. This isn't a big one since ko's observables don't do it. But, it might be nice to create an alias like getItem/setItem that you could use to set by index which would also cause the change notifications to fire. This could optionally be shimmed into the native array so that one could use indexing in the same way without having to know whether or not it was an observable array.
2. Handling of array length. I haven't tested binding against that. So if might already work. If not we could use a similar tactic as described for indexers.
3. Transparent binding in custom binding handlers. In a custom binding handler, it's common to call ko.utils.unwrapObservable(valueAccessor()) We would need to ensure that this works properly regardless of what type of observable it is. Maybe it already does I haven't tested, but wanted to mention that. We don't want to break anyone's existing binding handlers because of how the observables are implemented.
4. Need helpers for subscribe/unsubscribe that work against any type of observable too.