Это связано с тем, что PDO обрабатывает хост «localhost» специально:
Примечание: только для Unix: если для имени хоста установлено значение «localhost», соединение с сервером выполняется через сокет домена. Если PDO_MYSQL скомпилирован против libmysqlclient, тогда местоположение файла сокета находится в каталоге libmysqlclient, скомпилированном в местоположении. Если PDO_MYSQL скомпилирован в отношении mysqlnd, то по умолчанию можно установить параметр по умолчанию через параметр pdo_mysql.default_socket.
(из http://php.net/manual/en/ref.pdo -mysql.connection.php )
Изменение localhost на 127.0.0.1 «принудительно» использует TCP.
Примечание: mysqli_connect отлично работает с localhost.