Well I think it's mainly a hardware limitation. I still get kicked out of apps from time to time due to low memory. This is probably due to errors on the programmers side. However if this happens with a single program running, you can imagine what would happen if other programs get memory hungry. It raises a lot of questions, what is acceptable amount of memory to use in the background? Which program does the OS terminate first? Save state when I'm told to go away?
I think Android has handled a lot of these questions very well. We'll see how Apple handles it in the future, but I don't see background processes being compatible with older models of the iPhone.