Em man 1 bash :
Each command in a pipeline is executed as a separate process (i.e., in a subshell).
Esses subshells herdam variáveis do shell principal, mas são independentes. Isso significa que mapfile em seu comando original opera em seu próprio myarr . Então echo (estando fora do canal) imprime vazio myarr (que é o myarr do shell principal).
Este comando funciona de maneira diferente:
find . -maxdepth 1 -name "mysqldump*" | { mapfile -t myarr; echo "${myarr[@]}"; }
Nesse caso, mapfile e echo operam no mesmo myarr (que não é o myarr do shell principal).
Para alterar o myarr do shell principal, você precisa executar exatamente mapfile no shell principal. Exemplo:
myarr=()
mapfile -t myarr < <(find . -maxdepth 1 -name "mysqldump*")
echo "${myarr[@]}"