Some thoughts on this
Having worked at a related company for a while, I can say that there are several good reasons for Apple's behaviour on this upgrade:
1) The customer experience of running OS4 on a 1.0 iPhone would probably be terrible. As someone else said, each device is a walking ad for iPhones in general.
2) Notwithstanding point 1, even if the performance of an original iPhone and a 3G are the same (which seems to be a point of contention), you *cannot* discontinue support and an upgrade path for devices that are still available for sale. Crappy and low-end companies do that; companies like Apple do not.
3) The effort involved in creating, testing, delivering and supporting a build of software extends well beyond just hitting "compile". Every test needs to be run on every build, on every supported device. The binaries often need to be manually tweaked per target, the build machines have to be set up for additional deliverables per target device, the App Store needs to have the right binaries delivered, customer support needs to have additional documentation, etc, and when any of this goes wrong internally (as it will at any company), someone needs to clean it up. Then what if the interactions between the app processor and the radio processor are different between 1.0 and 3G (as they obviously are, since the radios are different)? You will have bugs that only surface on the 1.0 devices; will these get fixed? The man-hours that get sucked into supporting a target that is "almost identical" to another target can be staggering.
4) The people who bought iPhone 1.0 tend not to live in social housing projects. They will wail and gnash their teeth and then pony up another few hundred $$ for the latest and greatest iPhone, or a used 3GS, because they can afford to. Apple doesn't cater to the poor; it never has.
There really isn't a good business case for supporting the 1G, and I think 3G upgrades will disappear 4-6 months after it is discontinued.
Spiggles