Why does rm in zsh abort?
With the zsh, the (very sane) default is to error on globs that can't be expanded to existing files. In other shells, the usual default is to leave the glob untouched (which may or may not be the right thing to do depending on the command - and it may very well be a very wrong thing to do). I suspect your Linux configuration has this overridden somewhere to follow the behaviour of other shells.

If you're using zsh on both shells, IMHO the best option would be to qualify globs that are allowed to expand to nothing using the (N) qualifier:

% echo .zshc*
zsh: no matches found: .zshc*
% echo .zshc*(N)

%


Of course, you can change this behaviour globally. Pick whichever of the following most suits your needs:

setopt nullglob # all globs can expand to nothing
setopt +o nomatch # leave globs as-is instead of reporting error