A class has higher specificity than an attribute selector. Of course, in most cases you'd use an attribute selector as part of a descendant selector, so it increases specificity as well, but not as much as a class would. E.g.: <code>.foo { ... }</code> scores 010 on specificity, <code>html[dir='rtl'] .foo { ... }</code> scores 011, and <code>.html-rtl .foo { ... }</code> scores 020.

As a general rule we should use the least specific selector required to do the job, since it's easier to override later in the cascade if we need to without trumping up ever-more-powerful selectors. I've probably used the class myself in some places where an attribute would have sufficed, but typically I'd favor an attribute selector first and only use the class when we need the extra power.

Of course, older browsers (namely IE6 and 7) that don't support attribute selectors wouldn't get the alternative styling, so that's another use-case for a body class, but I wouldn't worry about that for this page.