It has to do with "distribution of force". The attraction of gravity is a constant between two masses. If you put a spring below a bowling ball, the spring compresses in response to a fraction of that force, and thus the bowling ball experiences less force against the bowling ball as a result. For the right size spring, the force between the spring and the floor and the force between the spring and the bowling ball might even be equal. These two forces add up to what the bowling ball experienced when resting on the floor. It's all there, but it's divided up. If you measure the force between the spring and the bowling ball, you are only measuring half the force, and it will register only half the weight. Thick carpet actually doesn't store much energy, but it's there and can shave off a few pounds on the reading on the scale.
The scale itself actually affects this reading also, because it also takes a small slice of the force, and it measures that force to produce the reading on the scale. So any scale you get on "will read a little low", though this is usually compensated for by the scale's calibration. And this is why scales that can measure large weights cannot accurately measure small weights without dynamic calibration.