Few things that make Android Laggy
Firstly the 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.

Not to mention the resolution and color depths of high-end Android phones have completely outstripped the dumb-frame buffer 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. 

That's why some Android home screen-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.

Secondly, Android's primitive 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.

Android ROMs no longer make it easy to enable swap, even though it can be a HUGE performance boost. 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.

If you can think of anything else please do share it in the comments.