Wondered about that myself until I found CMP implementation in the game is fluid and not static. A big part of tricks some thorn scripts play is reading data from CMP’s and changing that data in some way. Perhaps this is the reason. It shocked us at the beginning that CMP could and does hold textures. My beating my head against a terrain mesh change for Planet Toledo had me loading textures into the cmp when I ran into a mesh that didn’t load into Milkshape correctly.
Then scripts move mountains. Literally. and When Toledo’s CMP is scripted to become Planet Sprague in the story line, boom everything is changed. This might be the reason the .vms has redundancies. And the fornat has to cater to more that ships. If scripts have to pull out data it doesn’t bother with the entire .vms as it doesn’t effect the entire .vms, it takes data from and makes changes to the data farther down the tree.
For all intents and purposes CMP for ships is static and being so has mat files that have to be called from the ini files. Which also makes me wonder if the MATs too couldn’t be added to ship CMP’s, but that’s for other savants to wrestle with. I’ve got enough on my plate right now.