Hola:
Justamente el tema semántico es el que me hace pensar que css no debe usarse para efectos visuales (o de otro tipo)... la respuesta a eventos y efectos no son cosas de diseño; más bien son cosas de programación.
Hay cosas que pueden hacerse de más de una manera, y lo que propongo es que se aplique siempre lo mejor o más adecuado. Está claro que un rollover no es cosa exclusiva de javascript; pero tampoco de css, pero entre una cosa y otra, al tratarse de un efecto visual, creo que lo apropiado es javascript... y si alguien deshabilita javascript será porque entre otras cosas no tiene interés en un efecto visual rollover (como sea).
Otro debate podría ser entre atributos html o estilos, y siempre prefiero (o mejor dicho, pienso que es lo adecuado) usar estilos (como height, width, align, etc...)
Claro que algunos atributos no tienen versión "style" (enctyppe, type, action, target, href, etc...)
Saludos