>On Linux systems, (and perhaps most Unix-likes? IDK) some fraction of the file system is typically reserved for root, typically to allow core functions to continue and to give some breathing room to recover the device. This is the -m flag to mke2fs, "Specify the percentage of the filesystem blocks reserved for the super-user." which defaults to 5%.
I've also had this happen when I ran out of inodes (the files storing metadata) - you can run out of the allocated number of inodes when you have millions or billions of files while still having hundreds of 'normal' gigs free. `df -i` will tell you.