With WCF you’ll get plumbing and serialization and such.
The Protocol is already figured out for you: request/response message passing.
The lowest level transport details are already implemented for you.
Socket code will require much more work and testing on your part, but can
potentially be faster. You’ll have to create your own protocol, decide how
messages are serialized and so forth. In my experience so far, I’ve used WCF or
REST APIs for everything except for a chat application I wrote, where it made
sense to go down to sockets.
Edit: one other reason why I used Sockets for the Chat application is that
while WCF has a "duplex" notion, sockets are naturally read/write, and it seemed
more natural. If any event occurs on the server it can truly push a
message down to the client immediately using the socket and the client will read
this assuming the various async read code is set up.