Os links que você fornece explicitamente afirmam:
The st_blocks field indicates the number of blocks allocated to the file, 512-byte units.
Então, eles estão sempre em blocos de blocos de 512 bytes, independentemente do dispositivo subjacente usado. O comando stat
simplesmente exibe o que a chamada do sistema stat
retorna. O bloco de 512 bytes é uma coisa histórica, definida no POSIX. Compare, por exemplo, estes:
$ ls -s smallfile.txt
4 smallfile.txt
$ env POSIXLY_CORRECT=1 ls -s smallfile.txt
8 smallfile.txt
GNU ls
exibe blocos por padrão em blocos de 1kB, mas quando forçado a obedecer ao POSIX, ele mostra blocos de 512 bytes.