I found the solution.
I did extract and copy the mmap, but I forgot to manually enable mmap in the worldserver.conf with "mmap.enablePathFinding = 1".
The TrinityCore Installation Guide does not mention this step, so I thought the mmap would automatically be detected like the vmap. I think this step should be added to the guide. Without manually enabling mmap, enemies walk through cave walls and random mobs stand still on the world map despite having extracted and copied the mmap directory.
Other than that detail, I think the installation guide is very well written and complete.