I don't think there is a problem. At least not a new problem because Zsh 5.8 and Zsh dev behave the same way.
Note that if you replace the body of "f" with just "false" you get the same results.
Note also that if you run "return; echo $?" nothing is printed.
From that I concluded that the example behaves correctly. The function "f" returns a non-zero status. Therefore the call to "f" triggers a return, which at the top-level simply exits the script/returns to the command line and thus bypasses what comes next.
Philippe