There are 4 APIs for saveDocument(). Two of them take an oldDoc. These 2 APIs do send notification. The other 2 don't take an oldDoc and don't send a notification.
I believe the reason for this is that the saveDocument that takes an oldDoc is flawed. I can't rationalize the fact that the API would need to be passed an old document (prior to modification). The modifications should rather be held INSIDE the XWikiDocument object itself. See
I'm attaching a test case that proves it doesn't work.