Il a des "écrans" différents : le menu, le jeu, etc. Comme ces écrans n'ont rien en commun (logique et graphismes différents), ils n'ont rien en commun non plus dans le code. C'est comme si chaque écran était une mini-appli à part entière -- en caricaturant un peu.
Ceci-dit on peut quand même faire mieux. Tu te rends compte que dans l'exemple que tu as donné, les 3 lignes de code sont identiques, elles ne s'appliquent juste pas au même "écran". Du coup tu peux factoriser :
window.pollEvent(event)
ecran_courant.gerer(event);
ecran_courant.draw();
ecran_courant étant une instance de EcranMEnu ou EcranJeu, dérivant toutes deux de Ecran (par exemple). Ca te permet de factoriser la logique de haut-niveau, la boucle principale en gros.
C'est un pattern courant, pour lequel tu trouveras pas mal d'articles et d'implémentations. Y compris sur le wiki de SFML.