Você quer passar esses elementos da matriz como argumentos para find :
TESTP=(-path './var/*')
find . "${TESTP[@]}"
Ou crie uma linha de comando shell e peça ao shell para interpretá-lo (e as aspas nele):
TESTP='-path "./var/*"'
eval "find . $TESTP"
Ou você pode usar o operador split + glob (que você usou inadequadamente deixando sua variável sem aspas na pergunta) em uma variável escalar:
TESTP='-path,./var/*'
set -f # no glob
IFS=, # split on ,
find . $TESTP
Na sua,
TESTP=( "-path" "\"./var/*\"")
find ${TESTP[@]}
${TESTP[@]} é expandido primeiro para o elemento da matriz ( -path e "./var/*" ), e então cada um está sujeito ao operador split + glob (como você esqueceu de citar), então com o valor padrão de $IFS , eles não seriam divididos, mas como o segundo contém um caractere curinga, ele pode ser expandido para os arquivos cujo nome termina em " no diretório "./var .
O mais provável é que não exista nenhum diretório ". , então ambos os argumentos são deixados como está e passados para find . E isso seria o mesmo que
find -path '"./var/*"'
Ou seja, procurando por arquivos abaixo do diretório "./var que terminam em um caractere " .