This is something that Pro|E has had problems with for ages and I still see it creep into Creo from time to time... but for the most part, it is not a serious problem or issue although I haven't captured the full reason for the glitch. For the most part, it is either temporary (something hung in memory) and other times, it is human error.
What version are you using? Sounds like you have WildFire since Creo uses a different sequence than you describe.
If you address all your parts on an individual basis, and verify that a unit length is exactly as you expect, you should now have a clean set of parts all at accurate scales as expected. Close your sessions and erase not displayed to clear memory. You might even close the application and restart it just for good measure.
Now assemble your parts back into your assembly, making sure the units are what you want them to be. Everything should now come in exactly to "scale". Generally, there is no difference in what units the parts use for assemblies. There are only a few occasions where this matters but in general, you can mix units at will. You can verify the scale of the assembly is as expected using the measure tool.
My take on this is that sometimes the system gets confused. I have seen this when importing or exporting files. Again, I can't duplicate the error so it is moot to try and report it.