Sim, eles ( [ -z "$VAR" ] e [ "$VAR" = "" ] ...) são equivalentes. Ambos estão testando o vazio de $VAR (por exemplo, quando não está vinculado ou definido como uma string vazia).
Como comentado por Celada , coisas ruins podem acontecer ao usar [ "$VAR" = "" ] if VAR é válido teste (por exemplo, se VAR é -z ), em particular quando [ (ou test ) não é um shell embutido. Mas em bash ou zsh , o [ é interno e isso não parece ser um problema. Você pode usar [ "x$VAR" = "x" ] para o seu teste. Veja teste (1)
Claro, estou assumindo algum shell POSIX ou algo semelhante.
Talvez -z seja um pouco mais rápido (mas você não deve se preocupar com microssegundos em scripts de shell) e talvez você ache que = talvez seja mais legível.