Personalmente, solo las utilizo cuando no queda más remedio, y esto solo me ha pasado cuando he tocado una BD que ya existia y que habia que cambiar, como ya estaba en producción no tuve más remedio que hacerlo.
Mi opinion, es que fuera de las n:m y con un buen diseño no son necesarias, por ejemplo:
Una tabla Semestres (PK = n_año, n_semestre) -- Aqui podrias tener una PK de dos campos
Pero se pueden dejar como UNIQUE y añadir un autoincremental como PK. Para mi esta opcion es mejor, porque simplifica las relaciones de la tabla con el resto del modelo.
A ver si ahora nos entendemos