I would think this is not expected behavior. I think that initially the purpose of the document was to mimick a perspective property set, and so it is actually created as a Document and DocumentElement. So in order to actually write stuff to it, or read it and then write to its child objects, you have to convert it into an actually python dictionary, then back into a string to write it.
I would presume that the document being so new, and perspective being so new, it hasnt been as heavily used yet for enough people to find all of the little bugs with it like that. For instance, Document is an option for a Vision client tag, but immediately throws an error when you try to create one. The unfortunate side effect of this, is that while the bug tickets get created, they probably dont get addressed as they only affect a small subset of people using the relatively new feature.
But to clarify, I would absolutely LOVE for the Document tag to be treated like a regular python dictionary in reading, writing, editing etc. Especially to be able to reference and manipulate it without having to read it and then write it again. It is extremely valuable when you are using document storage for a project, and are able to use tag events to create your document through a document tag and then log it to the database.