На сколько я понимаю алгоритм работы jQuery, хотя в нем не работаю, $(".photo-box") выберает все элементы с таким классом...
Если я правильно понял, то попробуй так:
$(".photo-box")
.hover( function () { $(this).addClass("hover"); }, function () { $(this).removeClass("hover"); })
.filter(function(i){if (!(i%4)) $(this).removeClass("photo-box").addClass("photo-box-last")})
кстати не понял есть или нет функция типа replaceClass или switchClass, что бы не было remove & add