A melhor maneira de corrigir isso é evitar o uso de permissões unix padrão como aplicação.
Os quatro comandos a seguir devem resolver isso:
setfacl -d -m apache:rwx -R /path/to/shared/folder
setfacl -d -m user1:rwx -R /path/to/shared/folder
setfacl -m apache:rwx -R /path/to/shared/folder
setfacl -m user1:rwx -R /path/to/shared/folder
Isso altera o comportamento do arquivo usando o POSIX ACLS para que tanto o usuário FTP quanto o apache possam alterar / remover / criar arquivos dentro desse diretório, independentemente de quem foi o autor original.
As máscaras ACL são definidas pelos bits unix padrão para o grupo. As ACLs podem dizer que um diretório é diretório, já que inevitavelmente tem um + x nele. Um arquivo normalmente não será assim mesmo se você tiver uma ACL definida como rwx dentro dela, a parte + x será mascarada pelo bit de permissão de grupo que não está sendo definido.
Outra maneira é usar suPHP, suExec ou algum outro método 'change user on execution of program'. Mas, pessoalmente, acho esses métodos menos convenientes do que isso.