I'm surprised that grep -v line even works, given that there's hyphens in the match string which could be parsed as flags. Usually using -- inhibits that behaviour. Additionally when using regex-like things it's probably best to use egrep. So:
egrep -v -- "^--"
Unless zsh has its own internal built-in for grep. I'm also surprised zsh is smart enough to work out the recursion situation in your function vs. your alias. (alias is named "portmaster", function calls "portmaster", which could be the alias itself, rather than /usr/local/sbin/portmaster for example). Interesting.
Congratulations on getting rid of portupgrade and the utter mess that it is. I keep telling people to avoid use of it solely for the database inconsistency ordeal (pkg db vs. portupgrade's db), but nobody ever listens until months/years down the road when they encounter it and go "hurrrr hurrrrrrrr hurrrrr it must have been something else, portupgrade is awesome". No it's not awesome, it needs to be nuked from orbit.
Finally, if you want some features in portmaster (e.g. something that might avoid the need for said function in zsh, such as a flag that does exactly what you need), do not hesitate to mail Doug Barton about it! He's *incredibly* receptive to changes and feature requests relating to portmaster. Don't fear him. :-)