internal-sftp - это по сути отсылка к дефолтному sftp-server бинарнику (/usr/lib/openssh/sftp-server). Если задавать какие-то другие значения через -u, то заметно, что как-то всё-таки оно действует.
В общем, после ряда экспериментов я пришёл к выводу, что итоговые права получаются из прав исходного файла на стороне клиента (и OpenSSH sftp клиент всё-таки передаёт их серверу) и наложенного на него umask. К сожалению, форсировать права по крайней мере в линуксовом порте OpenSSH, похоже, нет возможности.
Многие sftp клиенты не забывают копировать права соответствующими командами ;)
большинство. как вариант можно пропатчить бинарник sftp сервера и убрать обработку команды chmod, повесив на нее заглушку. а с пермишенами в линуксе нерешаемая беда. вот еще selinux может помочь.