Justement c'est futile, quand tu fais une jam par exemple, c'est le truc que tu fais en dernier.
Jam != Jeu "normal"
.
C'est comme poser la porte d'une maison avant même d'en avoir construit l'intérieur 
Pour ma part je considère les menus comme des couloirs menant à des salles
.
De toute façon ça a pas vraiment d'importance, ça change quelque chose uniquement chez les personnes qui ne comptent pas finir un jeu quand elles le commencent, mais vu qu'au final on est forcé de faire un menu d'introduction; si on compte finir son jeu, on doit faire un menu, au début de la programmation ou à la fin 
Exactement
.
Autant faire tout les menus à la fin, car si tu commences par faire ton menu principal, tu auras pleins de boutons qui ne mène à rien, ex : le bouton play, le bouton options, etc (ou c'est peut être que je suis maniaque).
Ce qui veut dire que tu devras tout raccorder quand tu seras en pleine programmation du jeu en lui même, ou à la fin du développement (ce qui est bête, autant tout faire en une fois).
Sauf que je gère les menus comme des screens à part entière, donc il me suffit (avec libGdx) de faire :
button.addEventListener(new ClickListener() {
@Override
public void onEvent(JE SAIS PLUS QUOI) {
((Game)Gdx.app.getApplicationTruc()).setScreen(new
Options());
}
}
.
Après c'est juste mon point de vue, et je comprend parfaitement le votre 
A chaque programmeur sa façon de programmer comme on dit
.
Après, entre le fait de créer un "vrai" jeu et le fait de participer à un concours, on gère pas forcement de la même façon à cause du facteur temps. Là je rentre le soir, j'ai pas forcement envie de me taper des collisions chiantes, donc je préfère passer quelques heures sur un truc relaxant, c'est à dire un menu. C'est simple, pas prise de tête, et ça repose l’esprit avec du Green Day
.