Parece que funciona para mim
root@srv:~# puppet --version
2.7.23
root@srv:~# cat test.pp
file {'/root/test.pp':
mode => 2775
}
root@srv:~# puppet apply test.pp
notice: Finished catalog run in 0.06 seconds
root@srv:~# ls -al test.pp
-rwxrwsr-x 1 root root 40 Jan 22 22:54 test.pp
Questão tola, mas o sistema de arquivos subjacente suporta sgid certo? Tente simplificar suas regras, talvez dê uma olhada na sua marionete e veja se as permissões estão sendo definidas e, em seguida, sendo revertidas por algo que você não esperava.