I think some people are missing the point. The point in this case is not the final product, but the development process. The journey rather than the destination. In electronics, the journey isn't a straight line, it frequently doubles back on itself and can entail returning to the start several times!
I wouldn't have done it the same way either, but then I'm not making it. Get two engineers together and you'll get two vigorously argued opinions about how to do something. Keep them together for more than five minutes and you'll get another two - probably more. It is tempting to think of electronics as a pure science. It just isn't. It is the art of compromise and judgement. Change one trade-off even slightly, and everything can be screwed up.
One thing that I would have done in this case would have been to prototype it on breadboard, and got some test software written. However, this wouldn't have been an issue if Itead had got their fingers out and got the PCBs shipped!
On a more constructive note - How about using 1 or more of the spare outputs (or reconfigured inputs) to strobe the key switches. This would open the opportunity to have more keys for a 0-9 keypad etc via additional strobes. It would complicate the software, but it can still be interrupt driven.
I wouldn't have specified Ethernet either, and would also have gone with RS232. Much easier to integrate with existing software and easier to hack some software together. But hey, if the SPI bus is available and there is a cheap module - why not? Leave it to the people in the open software community, it all adds to number of potential purchasers!
To clarify something I said in an earlier post; I wasn't intending that the PSU actually be an Arduino, but be a "shield", with the Arduino supplying the processing (and external brick power supply). I know this is ridiculous, but we have seen recently with the Quadcopter and Makerbot, that people just love buying "stuff" to plug into their Arduinos, even if it would be cheaper as a standalone unit with integrated controller. Places like Adafruit and Sparkfun will gladly stock a shield, whereas they would not want to stock yet another Arduino clone itself. Just a thought.
Of course, as it is an open design, a shield version could be designed at a later date anyway.