*exec* by exiting after it executes the builtin command. So *exec echo whatever* is just a shorter way of writing *echo whatever; exit*. Ok, that's clear.  Polite of zsh to be consistent there.  If one types 'exec' then one wants exec to do what it does, so treat all commands the same.