I think the original point still stands. When the application tries to handle memory pressure itself by writing data structures to disk, it will hit the case where the kernel has already paged that memory out, has to reload it, only to write it to disk and free the memory afterwards.
(Some allocators, like glibc may also use brk, but it's possible to write a fully functional allocator with only mmap).