I'd have to go with it's the machinery (and lack of quality control). Most machines that fill containers with liquid are set to a certain level, 30ml for example. The machine will keep spitting out a max of 30ml, but if there is a jam, the liquid is heavier or thinner, a delay, or any other reason, it will only spit out a max of 30ml, never more, sometimes less. Then in a manufacturing environment they have quality control people that go and measure the size of random bottles from each batch and in some companies they even check every single bottle. Then they pull the under filled bottles out, either
throw them out or open them and re-add it the main liquid batch or sell them as under filled bottles (at clearance prices).