base2 is used for memory since that is the way that the memory is actually addressed.
decimal is used for the hard drives because (with chs or lba, etc.) that is how bytes are actually addressed on the disk.
what the os actually does with the disk and allows for free space is beyond the control of the drive producer. the best they can do is give the full unformatted capacity.