According to the ISO/OSI model, TCP is a transport layer. HTTP is an application layer implemented on top of TCP. So HTTP will always have added overhead, no matter what.
Generally. if HTTP solves a fair amount of your application-layer problems then use it, because it's well-established, highly interoperable and proven. If you need to do a fair bit of work to get things going even when your application uses HTTP, and things get better and simpler with TCP, then by all means, go for a lower-level protocol.
Specifically regarding WCF, I have no idea what their TCP-only implementation looks like. I'd wager it's simpler than HTTP though. HTTP is probably used as a "bulletproof" communications medium, and the cost of the HTTP overhead is justified by the fact that the protocol easily traverses proxy servers, etc.
netTcpBinding
against what? – Heterosexual