Currently the split of memory between arm and GPU is handled by switching start.elf files and the start.elf file selected determines how much memory the arm gets. However this is suboptimal to say the least since it means the memory split can only be varied in pretty coarse steps and more importantly with the release of the 512MB Pi an image can't be setup to do the sane thing on both models of Pi.
Surely there must be a better way than this. One idea that immediately springs to mind would be to split the address space into THREE areas. First a linux boot area from 0 to 128M. Then a GPU area from 128M to a user configured reach and finally a second area for the arm taking the remainder of the memory. This would be a little more complex than the current setup but afaict linux is already designed to handle non-contiguous physical memory so it shouldn't be a massive problem.