Não, não diretamente, pois os parâmetros da função os mascaram. Mas no Bash ou no ksh, você poderia simplesmente atribuir os argumentos do script a um array separado e usá-lo.
#!/bin/bash
ARGV=("$@")
foo() {
echo "number of args: ${#ARGV[@]}"
echo "second arg: ${ARGV[1]}"
}
foo x y z
Observe que a numeração da matriz começa em zero, então $1
vai para ${ARGV[0]}
etc.