А между тем, когда сервер отдаёт файл, он же отправляет размер файла. Очень редко происходит отдача просто потока без размера. Стало быть, curl при неожиданном закрытии соединения может сигнализировать об этом, выдавать код возврата не 0. Понятно, что | действует как поток, но тут уже наверняка существует возможность полной буферизации результата curl, вместо передачи потоком.