No usamos “”ayer por la noche”” porque no lo usamos. La frase fija “”anoche”” solo tiene el efecto de bloqueo sintáctico; es decir

la existencia de la frase “”anoche”” impide que otras formas aparentemente lógicas de decir lo mismo sean gramaticales.