More specifically, because lots of Android's fundamental architecture was dictated by a perceived need to work on slow CPUs (as in, 400MHz ARMv6) with absurdly low-res displays (remember 240x360?). Literally NOBODY involved with Android's genesis would have believed you if you told them that 5 years after the HTC G-phone's arrival on T-mobile, a phone with 1280x800 display, 1Ghz dualcore CPU, a gig of RAM, and at least 4-8 gigs of flash would be considered uselessly ghetto and hopelessly obsolete.
Remember, the whole reason why Google made the Nexus One was its frustration with the wimpy hardware of the second-gen Android phones, and hints that the third-generation phones were only going to be another half-step better. On the day of its release, the Nexus One was literally leaps and bounds beyond any competing phone, and its popularity forced HTC and Samsung to throw away their roadmaps and race back to the drawing board to come up with the Evo4G and Galaxy S family.
Current things that make Android feel laggy:
* 30hz touchscreen drivers and screen update rates are still the norm. 1/30th of a second is long enough to be perceptible as "lag", and when you factor triple-buffering into the equation, the lag is more like 1/15 second.
* The resolution and color depths of high-end Android phones have completely outstripped the dumb-framebuffer 3Dfx-heritage architecture behind most current hardware. Most video chipsets were optimized for 16-bit color at 1280x800 (more or less), but some high-end Android phones now ship with 2560x1600 displays running at 24-bit color and can barely sustain 30fps, let alone 60fps or faster. Basically, they're optimized for (and accelerate) the wrong thing. They might have great 3D graphics for games, but those capabilities are unusable and useless at higher-res/color. That's why some Android homescreen-replacement apps use 3D acceleration, but become fuzzy during transitions... they drop the resolution and color depth down to what the chips can handle, and don't go back to full-resolution until the transition completes. You can see it for yourself... do the "rotating cube" effect (or whatever you want to use), and notice that the moment the gesture begins, the resolution gets fuzzed in half, then snaps back into focus when you stop.
* Android's primitive (compared to Java since 1.4) garbage collection, which practically forces the OS to constantly kill off apps running in the background to reclaim their RAM, coupled by the real-world problems of trying to use a phone's flash to do Linux-style virtual memory (if you aren't careful, you can literally burn through an eMMC's lifetime write count in a few months. MicroSD is even worse... more than a few guys at XDA have destroyed expensive Sandisk microSD cards with a few days of hard benchmarking and intensive swapping. That's why most Android ROMs no longer make it easy to enable swap, even though it can be a HUGE performance boost. Too many users were destroying flash cards too quickly. Cyanogen with a large swapfile that's tweaked to abstain from killing off idle tasks will nuke a brand new class-10 microSD card in about 3-8 months of normal daily use... and if you did a swapfile with the phone's INTERNAL flash, your phone would essentially get bricked once the counter tripped and the eMMC write-protected itself (because Android can't deal with booting into an environment where it literally can't write ANYTHING to disk).