This is not unexpected since the way the volume of a solid body is measured is an approximation based on a method known an 'octree' decomposition, or to some, the 'LEGO brick' method.
I'm sure you've seen a model of some famous landmark, such as the Statue of Liberty, or Mount Rushmore, modeled using LEGO bricks. If you've nenver been, you really should visit LEGOLand sometime, either here in SoCal or if you're ever in Denmark, the original (I've been there twice), which is really great. Now if the model is large enough the fact that it's made up of ONLY cubical bits it not all that noticable until you get closer to the model. And if you had used DUPLO bricks it would have been a cruder model since those bricks are larger than the normal LEGO brick.
Well that's the way NX calculates the volume of solid, by breaking it down into a bunch of bricks and deciding whether a brick is completely INSIDE or OUTSIDE the model. If it's completely OUTSIDE, they are discarded. If they are completely INSIDE they are kept, but if they are part IN and part OUT, they are broken down to a smaller set of bricks using an 'octree' decomposition(that's where a cube is split using 3 bisecting planes, resulting in 8 cubes, each with a side half the length of the original SINGLE cube, hence the term 'octree', as in by '8' or octagonal). So once the these new smaller bricks are 'created', the process of deciding which bricks to keep and which to discard and which to split again, is repeated until one reaches the point where some preset tolerance is met with respect to some accetable error/accuracy (which is calculated based on the volume of bricks that had to be split in the last cycle versus the volume of the bricks on the 'keep' list). Once we meet this tolerance, or 'estimated' accuracy limit, we stop the process and add up all of the bricks that we've 'kept' and report that as the volume. Now since different bodies have different locations relative to the absolute frame of reference, which is used to align and start the creation of the 'bricks', and a mirrored body, unless it were a simple cube or sphere, will always be different spatially then it's parent, so we would not be surprised if we got a different result.
Now look at the 2 results and count the number of decimal places before you reach the first mismatch. Now look at the total mass and estimate what the size of the error might be. In fact you can see what the system reported as the esitamted error for any one single body by prining out the results (hit the little 'info' icon) and you will find at the bottom of the listing a set of 'Error Estimates' for each value calculated. Also near the top of the listing, just below the report of the calculated values, there is note giving you the tolerance or accuracy value used. Note that the out-of-the-box default is 0.99 and if you feel that you would prefer the system use a more 'accurate' value such as 0.999 or 0.9999 or even all the way up to 0.999999, you can set this in Customer Defaults -> Modeling -> Solid Modeling. However, for each step-up in accuracy you can expect a significant increase in the amount of time needed to make the calculations, depending also on how large and complex the shape of the solid body is.
Anyway, I hope this helped explain what is happening when you perform a mass properties and why there is no absolute one right answer.
John R. Baker, P.E.
Product 'Evangelist'
NX Design
Siemens PLM Software Inc.
Cypress, CA