There are two factors that make that the case:
1. There is needed formatting information, and space for extra partitions. This is usually minimal, but takes a bit of space. (also, if you do not consider system files, such as the OS, as part of 'your space', this will contribute to a much smaller hard drive. A laptop might claim to have 120gb space, but once you install two OS's and partition them, account for the 1000 to 1024 conversion... you could end up with 70 or 80gb to use.)
2. Advertising claims 1000=1024, so they claim it's higher than it really is. So, yes, it ends up actually being 1024, which is why it has been said that 1gb ACTUALLY equals 1024mb... etc.
The root "kilo" means 1,000, and the other measurements are just further multiples of this. A kilometer is not 1,024 meters, but just 1000. The only reason that computers do this is that 1024 is 2^10... 1, 2, 4, 8, 16, 32, 64, 128, 256, 512... 1,024. These numbers may seem strange to us, but that is because we operate in base-10, whereas computers operate in base 2. This means that when advertising "1000 megabytes!"... is right. But it's really more like 950-computer-megabytes.
In fact, this can be compounded by all of the levels, to where the number of bytes is like 1,100,000,000 and it is still only 1.0gb, according to this binary system.
To think more about base systems with numbers, think about time. That is base-60 (and base-24, at the hour level, or even base-7, for weeks, etc.).
base generally means when the cycle repeats itself. Though we do not have 60 unique symbols, this repeats itself by adding 1 to the next column, like base-10 numbers, but as the "hours", or "minutes"... seperated by a colon.
binary is far more simple.... a 1 or 0 represents that place, then the next number is represented, in the next column. It repeats itself with every representation, so that a number that is small in base-10 can be much longer in binary.... 1010101 = 85.