Você está misturando a sintaxe aqui.
O shell verá ${var[%d]
, que parece um pouco com uma variável shell - mas não é.
Você deveria tentar
cat <<EOF
...
EOF
para depurar e ver exatamente o que está acontecendo. O que eu acho que você quer é algo mais parecido com
for ((i=0; i<=10; i++))
do
var[$i] = i*10
done
gnuplot<<EOF
values="${var[*]}"
do for [j in values] {
#need to access ${var[j]} somehow
val=sprintf("%d", j) ##access part of the array directly
}
EOF