A general recommendation with BizTalk is to use pass through pipelines when possible, because of less overhead. But when do you have to use XML pipelines?
Often, you can use PassThruSend on the send side but you have to use XMLReceive. This is the case with e.g. the SQL adapter. Otherwise, you get a UnexpectedMessageTypeException ("Received unexpected message type ” does not match expected type ‘xxx’").