Das liegt ganz einfach in der Umrechnung des Binär- und Dezimalsystems begründet.
Genau genommen hat eine Festplatte mit 500 GB auch 500 GB Speicherkapazität, denn der Dezimalpräfix "Giga" bedeutet "Milliarde". Auf einer 500 GB Festplatte sind also auch 500.000.000.000 Bytes Speicherkapazität vorhanden. Das "Problem" ist, dass Windows zwar die Dezimalpräfixe "k", "M", "G", "T" usw. verwendet, allerdings im Binärsystem zählt. Für Windows bedeutet ein kB also nicht 1000 Byte, sondern 1024 Byte. Der Richtige Präfix wäre in dem Fall "ki", ein kiB wären also auch jene 1024 Byte. Der Fehler wird immer schlimmer, je größer die zahlen werden.
Hier mal die ersten 4 Größenordnungen in Binär und Dezimal gegenübergestellt und die Abweichung grob in % Angegeben
k = 10^3 | ki = 2^10 | Größe Binärpräfix gegenüber Dezimalpräfix 102,4%
M = 10^6 | Me = 2^20 | Größe Binärpräfix gegenüber Dezimalpräfix 104,8%
G = 10^9 | Gi = 2^30 | Größe Binärpräfix gegenüber Dezimalpräfix 107,3%
T = 10^12 | Te = 2^40 | Größe Binärpräfix gegenüber Dezimalpräfix 109,9%
Der Fehler liegt also nicht bei den Festplattenherstellern, die bentzen den richtigen Präfix und die richtige Größenangabe. Der Fehler liegt bei Windows, das für sein Rechensystem (Binär statt Dezimal) die falschen Präfixe verwendet. Würde Windows die Speichergröße im Dezimalsystem zählen, würde es auch bei einer 500 GB Festplatte 500 GB anzeigen.