A trivial example of where the function calling fork is supposed to return in both the parent and the child is if the function calling fork is a simple wrapper function, and the caller of that function is the one that chooses what to do in the parent, and what in the child. A simple wrapper function might not make much sense for pure C, but POSIX C++ bindings could legitimately want to provide a posix::fork() function that simply calls the global fork() function, but can be declared in a header that does not pollute the global namespace.
caveman gave a good less trivial example in a comment on your question.
The relevant standards address this by not addressing it. The description of fork() is specified without any restrictions on returning from the function calling it, so implementations can't choose to disallow that.
It's like how the description of putchar doesn't say that implementations can't choose not to print 'a', but if an implementation did that, I'm pretty sure we'd be in perfect agreement that that's not what the standards say, that's not what the standards meant to say, and interpreting it like that is just silly.