Huh, good job. That looks to be reasonably compact code.
I believe the chunking is to reduce the number of pages of memory that have to be touched when drawing a section of the map. For really wide maps, but a not so big screen size, a straight 2D array might need to touch twice as many pages of memory as rows of tiles. Basically, every row of tile would be on a new page, and might straddle a page boundary. With the chunking, it should be limited to 4 pages of memory in the worst case, and that's if it straddles a page boundary in both x and y. Back when Outpost 2 was released, computers were much more memory constrained, and Outpost 2 allowed for fairly large maps. The chunking was probably useful to help keep the memory manager from thrashing.