Você deve ir para dentro dessa pasta. Algo como:
#!/bin/bash
if [ ! -d ~/backup ]; then
mkdir ~/backup
fi
cd ~/folder
for i in *; do
echo "~/folder/$i"
if [ -d "$i" ]; then
tar -zcf ~/backup/"$i".tar.gz "$i"
fi
done
Além disso, é melhor usar cotações para variáveis quando essas variáveis se referirem a nomes de arquivos.