Well, I suppose that defining two protocols protects you from some "idiot" deleting IPC from the listener ( JOKING!).

In real life I would expect that TCP would not work if IPC was failing somehow (more layers) - though I could imagine IPC being OK while TCP was failing (messed up hosts file, dead DNS, corrupt routing table). Anyone with any better idea?