1. As mentioned by other commenters, radiation hardening takes several years.
2. The government procurement bureaucracy takes some time.
3. Obviously the rover has to be designed, built, and extensively tested on the ground. Possibly through several iterations depending on the results of the tests. I'm guessing since the rover has to be mostly software-driven due to lightspeed delay, software is a dependency of basically everything the rover does, and since the computing hardware is obviously a dependency of software, it'd almost have to selected very early in the mission development.
4. Getting stuff to Mars is really expensive. I imagine that most of the expenses are R&D for radiation hardening and fitting within the overall volume/weight/power budget. So the amount of memory for example is probably just what's needed to get the job done.
5. To me, 256 MB seems like an enormous amount of memory for an embedded system. Most of the memory usage of everyday computers is due to all the graphics and multitasking. (Think about the sheer number of scripts and images in a typical webpage, times the number of tabs you need to open to consume all your memory.) All of NASA's fancy GUI's like the simulation they showed during landing are on ground computers, not on the rover.
All in all, I thought the computer was enormously powerful compared to previous space missions.