In my opinion it is better since having the two classes allow you, amongst other things, to use advanced selectors.
Here is an horrible example from the top of my mind:
<nav class="menu">...</nav>
<div class="alert alert-<?php echo $alert-type; ?>">...</div>
.alert { border: 1px solid #ccc; } // Basic alert style
.alert-success { border-color: green; } // Success alert are green
.alert-warning { border-color: yellow; } // Warning alert are yellow
.alert-danger { border: 3px dashed red; } // Danger alert are red !!and have a bigger border!!
.menu { margin-bottom: 14px; } // The menu has a margin of 14px under it so nothing can get close
.menu + .alert { margin-top: -14px; } // Alert following the menu need to ignore the menu's margin
.menu + .alert-danger { margin-top: -16px; } // However, the borders of alert-danger are bigger than the regular alerts