Para ser mais claro
considere
cat <<EOF
foo bar $baz
EOF
fubar="Hello World"
cat <<EOF
echo $fubar
print \$fubar
EOF
quando a corrida vai dar
foo bar
echo Hello World
print $fubar
no primeiro gato você notará que a variável $ baz desaparece (desde que não esteja definida).
na segunda execução, defino a variável fubar, é ecoada com seu valor, para echo $fubar
escape de $
.
seu segundo script deve ser
#!/bin/ksh
#Switch user
export SUDO_ASKPASS=/keys/askpass.sh
sudo -A su - appuser<<EOF
#Go to folder.list directory
cd /scripts/
while read line
do
if [ ! -d \$line ]
then
mkdir -p \$line >/dev/null 2>&1 && echo "Directory \$line created."
else
echo "Error: \$line directory exists!"
fi
done < folder.list
EOF