If you are using the NTFS file system, I would say it was because there
is a certain amount of free space that the system must reserve for the
Master File Table (MFT). This space is actually free, but must be kept
in reserve for when it's needed. Some programs may report it as free or
not, I suppose.
With questions like this, it is important to state what your operating
system is, and the file system you're using.
Most free space erasing programs create a series of very large files on
the partition, then delete them afterwards. Possibly the files are not
being deleted properly, consuming large amounts of your free space.
These temporary files could be in your root folder, or in the
application's folder. They may end in .tmp, or something like that.