In effetti hai ragione, guardando la documentazione di lseek (che di fatto viene chiamata dietro le quinte) si legge:
The lseek() function allows the file offset to be set beyond the end of the file (but this does not change the size of the file). If data is later written at this point, subsequent reads of the data in the gap (a "hole") return null bytes ('\0') until data is actually written into the gap.
Dunque devi necessariamente scrivere qualcosa dopo se vuoi che il "buco" si crei effettivamente. Chiedo scusa per l'errore nella precedente risposta.