.git/config に filemode = false を設定していたはずなんだけど気がついたら元に戻っていた。
デプロイ先のディレクトリと同じ階層に DIRECTORY.tmp というディレクトリがあり、そちらに Git のコンフィグを設定するようなファイルがあったため core.filemode false を追記してみたところ期待通りの動作をした。
git-template/config
[core]
filemode = false
[init]
defaultBranch = none
[fetch]
recurseSubmodules = false
[transfer]
bundleURI = true
[http "https://gitlab.com"]
sslCAInfo = /var/www/html.tmp/CI_SERVER_TLS_CA_FILE