Is there a technical reason Android update story is so bad? Is there a technical reason why Android phones general lag a lot behind the stable released version of Android?  

This applies to both new phones, for example a recent trip to the phone shop everything was 4.0 to 4.2.1, KitKat could not be seen. And also old phones, my girlfriend's iPhone 4 had an OTA update to the latest OS, this is a July 2010 phone, whilst a July 2010 Android is basically a paperweight.  

Presumably Android itself doesn't concern itself with the actual hardware, and thus talks to the OS via abstractions? I guess then the handset maker just provides the drivers for the specific hardware, thus I can't see the issue with pushing OTA updates if the ABI remains stable (my phone doesn't grow new hardware features).
See this image released by HTC. It describes the update process in a very detailed form:



Image resized (click to see the full size)