Digging in with ludicrous tracing enabled, I found that in a number of places there are change notifications sent at ANY time that call is made that could change the document. In the case where the value that's set is identical, there shouldn't be a notification, as the document treats that as a no-op.
Baseline: the notifications should only be emitted when the set of changesets returned from heads() is actually different.