2010: Windows Phone 7 was still WinCE, but they removed full access to WinCE APIs, and got rid of PC style multitasking. They had a new UI framework for first party apps. Then for third party apps they had a port of Silverlight that imitated the new UI style. The latter had really terrible performance.
They had to base this release on WinCE because the NT kernel port to ARM wasn't ready yet. Blocking access to "good" APIs could be seen as a way to ensure app compatibility for the next release.
2012: Windows Phone 8 had the NT kernel. Also, windows 8 and windows RT shipped. But the silverlight-inspired UI framework of Windows 8 was different from the Silverlight fork from Phone 7. So you had yet another UI framework rewrite to cope with.