I can think of three possible reasons to drop support for older devices:
1. Binary drivers - so can't upgrade to more recent kernel which ICS uses by default.
2. Hardware performance - not enough RAM/CPU power to run the code
3. Human bandwidth - not enough people on team to manage that many devices
In some sense #1 is actually a #3. Theoretically, people could reverse engineer the binary drivers/write wrappers/etc...
Can anyone speak to the possible explanations above?