Короче я думала так:
1) Случай с озером — самый плохой за школьную карьеру Джеймса. Именно он запомнился, именно тогда Снейп обозвал Лили — значит ситуация была из ряда вон.
2) Джеймс это максималист. У него есть понятие что хорошо, и полутонов он не видит. Это легко приводит его далеко на темную сторону. Снейп же плохой? Он там что-то сделал какой-то девушке, дружится с пожирателями. Очевидно плохой — так что заслуживает.
3) Подозреваю, случай у озера показал Джеймсу, что он заходит слишком далеко и, ведет себя как мерзавец — так что он смог измениться. А вот Снейп измениться не смог, пока над Лили не нависла опасность. В этом его трагедия.