Compaction frees revisions internally but leaves the backend file the same size; defrag actually shrinks that file and returns space to the filesystem. It does not itself delete revisions (that is compaction), does not move data between members, and does not reorder keys by access pattern.
Official docs