iOS kinda does this. Apps built with a different SDK/toolchain will see different behavior from system libraries (UIKit etc). This was very noticeable in the ios6->ios7 transition. Existing binaries got the old keyboard, old ui metrics, old table view layout and behavior. Simply by recompiling with the new toolchain, the app is opted in to the new ui and behavior. (Incidentally, this meant a lot of work to patch up old code after upgrading the toolchain, quite a pain if you just wanted to release a small update to your existing app: Either you have to build with an older toolchain (not so easy or even supported), or you have to test and tweak your whole app all over again. This could probably be less of an issue if apple would support installing old sdks in new xcode version. But everyone just runs with "SDK: Latest" in their project build settings file)
Essentially it worked like Internet Explorer's DOCTYPE sniffing, my binaries always felt like they were running in some kind of "quirks mode", and I agree: it can be extremely infuriating... different parts of their mechanism seriously even check for different notions of "newness"! :(