Just try it out. If you use echo without indirect reference (that is without escaping the $ sign) the shell interprets it as a simple string concatenation:
Code:
echo $arr_Load${x}_Type${j}
the command above substitutes $arr_Load, ${x} and ${j} with their actual values, being null the value of $arr_Load.
If you escape the first $ sign without using eval, the shell interprets it as a literal $
Code:
echo \$arr_Load${x}_Type${j}
and the resulting output will be something like "$arr_Load1_Type1".
Finally the eval statement forces the shell to do two substitutions: the first for ${x} and ${j} protecting the first escaped $ sign; the second for the resulting $arr_Load1_Type1 that is the dynamic variable name you're looking for.