Este é o comportamento pretendido do recurso umask do UNIX, que é usado para controlar as permissões de arquivos recém-criados.
Por exemplo, com um umask de 0022 , os bits de gravação do grupo e do mundo serão mascarados. Isso provavelmente explica os resultados que você viu nos diretórios criados pelo seu script.
Você pode ajustar o umask no PHP para 0000 , mas como essa é uma configuração global de processo e o interpretador PHP está embutido no Apache, pode ter implicações de segurança além do seu script. A alternativa é emitir uma chamada chmod() depois de criar o diretório, que deve ser um pouco mais seguro e não depende da configuração umask .
Você também pode querer considerar se realmente precisa tornar esses diretórios mundiais graváveis. Se os arquivos precisarem ser graváveis pelo servidor da Web e por algum outro script, talvez você possa configurar o diretório para pertencer a um grupo comum para esses dois ambientes e torná-lo apenas gravável em grupo.