I would be really surprised if it was the fault of the OS. I mean, Windows can be really fast, in the right hands, especially since they've introduced HTTP.SYS (parts of the HTTP server now run in kernel level). However, .NET being a garbage-collected, managed and JITted environemnt, it is maybe not the best tool for achieving these kind of response times reliably. Any serious and competent .NET developer would admit that.
In general, I would blame the incompetence of Accenture for the failure: bad decisions, bad architecture, bad management, using the wrong tools, crappy code.
.Net and newer windows have some really cool real-time features -- like deterministic garbage collection options, various per-thread priorities for scheduling, preemption and so on, making it a decent real-time platform. (for some definitions of real-time).
I don't know why it didn't work out for Red Hat but it works quite well on Windows. And honestly I don't know whether they use(d) HTTP or not, but given that HTTP is dead simple and as lightweight as a protocol could get, maybe it wouldn't be such a bad idea to use it for exchanging messages in this scenario.
In general, I would blame the incompetence of Accenture for the failure: bad decisions, bad architecture, bad management, using the wrong tools, crappy code.