Well, it's pretty basic maths. 16-bit (signed) numbers go from -32767 to +36768. If you play back a 16-bit sound file where all the samples are in that range on a system that can only reproduce those it'll work fine at full blast. But if you reduce the volume in software by half it maps that 16-bit range onto numbers that go from -16383 to +16384 - you've lost a bit of information to make a 15-bit number. And 14-bit if you go to quarter volume.
But if you play that same 16-bit audio file on a system that support 24-bit numbers, at 100% volume it will put those 16-bits of information in the top 16-bits of the 24-bit number - i.e. stick 8 zeroes in the bottom bits. At 50% volume it will put them one bit lower, with a zero in the top bit, then the 16-bits of numbers, and 7 zeroes at the end. And 25% volume one step further. Only when you get down to 1/256th of maximum volume does it reduce the resolution of the signal.
In practice there are ways to reduce the apparent data loss, by adding up to a bit of random noise depending on the bits lost - but that's the same as anti-alising in computer graphics, where you add grey pixels to disguise the jagged edges - a bit of a hack.