Minha recomendação seria ativar o Logging on Cyberduck no Mac e, como você também tem seu próprio servidor FTP, ative o registro no servidor FTP.
Quando o problema ocorrer, anote o nome exato do arquivo e a data / hora do erro e, em seguida, verifique os arquivos de log, o cliente e o servidor, para ver se há algo óbvio.
Se o servidor estiver retornando uma resposta de nível 400 do comando PASV, pode haver um problema no servidor gerando uma porta de dados disponível para uso na transferência de arquivos. Pode estar sem recursos ou alguma outra limitação de servidor está sendo atingida.
A parte estranha disso é o arquivo de 0 bytes. Se o comando PASV estiver sendo emitido antes do comando STOR e ele retornar uma resposta negativa de nível 400, o cliente não deverá emitir um STOR para criar o arquivo, portanto, você não verá nenhum arquivo sendo criado no servidor. No entanto, se houver um problema no cliente e ele estiver enviando um nome de arquivo STOR antes do comando PASV, isso poderá criar um arquivo no servidor esperando uma troca PASV bem-sucedida e, quando falhar, será deixado um arquivo de 0 byte no servidor.
Examinar o registro do servidor pode mostrar o que está acontecendo.