Você não pode fazer referência a atualizações de variáveis feitas no processo filho (pipe conectado durante o bloqueio).
Em vez disso, alimente os dados usando o redirecionamento de entrada assim:
#!/bin/bash
data_file="$1"
down=()
counter=0
while read line; do
isEven=$(( $counter % 2 ))
if [ $isEven -eq 0 ]; then
down+=("$line")
fi
(( counter ++ ))
done < $data_file
echo ${down[@]}
exit