%full это процент насколько файл заполнен нулями
Тот факт, что файл может уменьшаться, является причиной, почему файл всегда занимает recordsize, это место только его и не может быть быть использовано другими ресурсами.
Это всё при отключённом сжатии.
Теперь, ситуация, если сжатие есть.
Ситуация становится чуть интереснее, файл из нулей логично занимает ничего, ему даже блока не выделено. В тот момент как в нём появляется хотя бы один байт,
И при использовании сжатия уже появляется деление на отдельные сегменты, они обусловлены тем, что пустые места в файле (0) не существуют для ZFS, поэтому для них не выделяется recordsize
А вот если говорить про сжатие данных отличных от 0, то ситуация слегка отличается. Даже если файл абсолютно одинаков (в данном случае файл содержит в себе только байт DC - в итоге на ФС всё равно окажется блоков (recordsize) по размеру файла, но фактический размер файла уменьшиться
(По этой причине бессмысленно создавать толстый zvol если включается сжатие)