WiredTiger checkpoints are always allocated from the end of the file: this means the file always grows at every checkpoint.
Checkpoints need to be allocated from the file's free-list, just like any other block.