The attached template allows you to quickly reproduce and observe the problem.
The flow generates a flow file, replaces the text with a simple two line CSV, updates an attribute to add the mime.type of 'text/csv'. For the flow on the left if you view provenance events of the 3rd processor (update attribute) you will be able to view the content apparently by its auto detected type which is considered 'text/plain'. If however you use the flow on the right and view the content of provenance events for the fourth processor you'll see it is now using the supplied mime.type.
What I suspect is happening is that the content viewer is being given access to the attributes of that flow file as they were before they were changed. It should be giving it access to the attributes after the change (at least in these cases, i can see when there is a before claim and an after claim that it would work differently)