Yes, your model might work without the forward usage.
However, utility functions such as nn.DataParallel rely on the __call__ method and thus on the implementation of forward.
Also, if other users would like to use your model, they would have to reimplement the forward pass in the forward, if they want to use hooks.
Hooks can be used for debugging or visualizations. But you could also easily add auxiliary losses to your model using forward hooks or some gradient regularization using register_hook.
I don’t see much benefit in using custom names.