programmers can take advantage of assumptions about the underlying architecture. ... These ideas often work in concert to yield intricate, platform-dependent bugs
I'm not sure about that "often" part.
Yes, C has a bunch of "undefined" and implementation-dependent areas that can be annoying.
(and probably impossible to fix, although not necessarily impossible to check for. Endianness?)
But I bet you could fix more actual real-world bugs by adding a "string" datatype and associated set of functions and operators, and having people use them when they needed, you know, STRINGS.