For size reasons. Memory mapped files let you
- use contiguous arrays bigger than available RAM, mapping file-backed data into virtual 64-bit address space
- use simple pointer arithmetics to access individual bytes, it is dead easy to implement SetBit() GetBit() etc
- let the operating system's cache algorithm handle the intricacies of swapping pages in and out (LRU/MRU etc)
- benefit from the speed and low latency of modern SSD's
- have the data on disk, ready to be re-used
Speed-wise this is only an option if the operating system can minimize swapping so accessing the elements shouldn't be totally random. If the probability of accessing an element is some kind of bell curve then it might just work.
[edit] typo.