aspetta, forse non ti seguo ancora.

Quando il client fa l'upload ha 2 scelte:

1. tramite il form http che gli offri tu (e allora si può usare move_uploaded_file) ma devi essere tu tramite un chown sul server poi a dare i permessi corretti al file, perchè in quel caso a scrivere il file sul disco è il web server

2. tramite ftp con un client che permetta l'accesso alla propria cartella sul server, in quel modo inserendo username e password nel client il proprietario verrà settato correttamente dal server ftp (qui però dovrai fare in modo che l'umask crei il file con i permessi che vuoi).

Nel caso dell'upload, php non può fare una connessione ftp, perchè le parti in causa sono

Web server - Server FTP - Client

E tu al massimo puoi connetterti dal webserver al server ftp.

Nel caso invece del download puoi usare il metodo di connessione via ftp da parte di php per andare a prelevare il file dell'utente dalla sua directory, e poi fornirlo al client tramite il browser.
E in questo caso manifestavo le mie perplessità, perchè il webserver dovrebbe connettersi all'ftp server, e anche se questo avviene in locale introduce comunque dei tempi di ritardo e un processo in più da gestire da parte del server.

In linea di massima io scarterei questo metodo di gestire i files, se ci metti un po' di attenzione puoi fare tutto in php.