Porque a maneira como você define py
é um alias de shell, e o Vim não sabe (nem se importa) sobre aliases de shell. Use uma variável de ambiente, talvez assim:
$ PY=/opt/python3.4/bin/python3
$ export PY
depois no Vim:
...
exec '!time ' . fnameescape($PY) . ' %'
...
Editar: Adicionada fnameescape()
. É necessário se $PY
contiver caracteres que tenham um significado especial para o Vim (f.i. #
e %
).