Ok, yeah, but here's the deal.
The reason you can't put the code on the SDHC card is part of the Android security model. Basically, they require full Linux protections to ensure that apps can't access critical data in the OS or other apps. That's fine.. but also a no-go on standard SDHC, because the SDHC spec calls for FAT32, which doesn't support proper protections.
Now, of course, non-critical data can and is put on the SDHC card, rather than in main memory. But eventually, sure, you could run out of internal memory before an iPhone would run out of its big block of fixed memory.
There are solutions... I have three in mind. The first is the one that folks are actually using.. you format your SDHC card in ext3. With that, no security issue, but you can no longer mount it as a USB drive under Windows (well not without an ext3 file system driver, and the one for Windows seems flakey). Works just dandy under Linux. And you need root access to do this, today, which isn't as evil as Apple's "jailbreak", but has similar connotations.
But in the future, an easy fix would be to let you format two partitions on the SDHC card, one FAT, one ext3. That could be added to Android in a day or so.
Next one... why not use ACLs (access control lists). I'm not sure if Linux is big on ACLs, but it's done on many other OSs. You could keep the ACL table for any number of SDHC cards in protected memory, and force the OS to use these before hitting SDHC. No errant app would be able to access FAT32 resources.. just as robust as ext3, from the Android phone's perspective.
A final one... create a virtual ext3 expansion disc as a file on FAT32. I use Sun's VirtualBox all the time, to run Linux under Windows. It creates a whole Linux disc as a file under Windows, one that grows and shrinks as needed. With an extra driver and setup API, this could allow for virtually unlimited app-space expansion, without compromising security or USB-drive access.
In short, there are a bunch of ways to fix this, entirely in software. I think the powers that be at Google will address this.. they pretty much have to. With that said, the 512MB in the Droid is just crazy cheap. I designed two radio controller units (Nomadio Sensor and React), each of which has 512MB of memory, just because it ran me relative few bucks. For $10, they could have at least doubled the internal capacity of the Droid. Sony's new X10 thing has the 1GB of internal memory.
It's not a long term issue anyway. If you had an Android phone with 256MB, that's a bad idea. With 512MB.. given that I have 100+ apps installed, and still over 100MB of free internal memory, less of an issue. Go to 1GB, and I might never run out of space. Any of my suggested changes could give you another 1GB or whatever you need.