Нашел причину)
В моем wsdl отсутствовал wsdl:output, то есть soap-клиент не дожидался ответа от сервиса и закрывал соединение. А сервер по каким-то причинам не переваривал такое поведение.
Как вариант, чтобы не править все wsdl можно переопределить метод __doRequest, чтобы принудительно в $one_way передавать 0:
class MySoapClient extends SoapClient
{
public function __doRequest ($request, $location, $action, $version, $one_way = 0)
{
return parent::__doRequest ($request, $location, $action, $version, 0);
}
}