One thing I don't see mentioned, do universal apps support C++11? I can understand why it's not as easy to support native code across platforms (i.e. need to do some kind of fat binary thing), but think it's a little sad to see all the work done to support modern C++ app development kind of abandoned. Really annoying if you have to choose between an app being universal or written in modern C++.
Fat binaries aren't needed to support pointer arithmetic or any other C++11 features in a cross-platform binary. LLVM bitcode supports pointer arithmetic. I also believe .NET bytecode supports pointer arithmetic. I'm not sure what other features you thought would require some kind of fat binary.
WinRT lets you write native Win 8 apps in C++, however it doesn't use LLVM or .NET bytecode. If universal binaries are supposed to be supported across different architectures (like x86, ARM, etc.) I don't know of any other way to support it than fat binaries.