Кавычки нужны из-за того, как zip обрабатывает несколько аргументов:
rm
: удалить все файлы в списке аргументов
zip
: разархивировать файл в первом аргументе. извлекать только файлы в остальных аргументах.
$ ls *.zip
file1.zip file2.zip file3.zip
$ unzip *.zip
Archive: file1.zip
caution: filename not matched: file2.zip
caution: filename not matched: file3.zip
как вы видите, он пытается найти file2.zip и file3.zip внутри file1.zip
чтобы позволить вам извлекать несколько zip-файлов одновременно, zip поддерживает интерпретацию glob самостоятельно, с другим результатом.