le_chocolat, l'interet est d'eviter les probleme de scoping en ayant deux variables du meme nom. Ou encore d'eviter de te tapper 50 declarations de variables en debut de fonction alors qu'elle ne seront utilise que dans une boucle a la con quelquepart vers la fin de la fonction. Mettre toutes les declarations au debut rends la comprehension du code tres difficile dans mon experience (particulierement en fortran).
Au niveau de la compilation/optimisation, il ne devrait y avoir aucune difference. Si il y en a une, je suggere un rapport de bug aux developpeur du compilateur. 