and age? Are they still programming those things in C?
And memory is cheap. How big do those routing tables need to be? Is there no protocol to flush old entries after some amount of time?
I could believe that those are the problems that cause the need for periodic reboots, but the real issue is that we are conditioned to reboot our routers regularly, so the manufacturers can get away with selling us crappy products. They have no incentive to make anything better.