I'll take a shot - I think it has something to do with using versioning - I seem to remember that when you are accessing a versioned document, you use a slightly different API to access the versioned info:
versioning internals...For versioned documents (with workflow assigned), only the published data is stored in the tables described in...
So I guess when you 'unpublish' the document, the data is cleared from the 'base' node object? In any case the docs clearly state that you should be using the 'DocumentHelper' class to alter or read node fields:
You should always use DocumentHelper for the document operations if not sure whether the document is versioned or not, the DocumentHelper methods will choose the proper actions for you.
I hope this helps!
Cheers,
Lance