Anything that's legal in JavaScript, you can do in CoffeeScript. Yes, CS has its own class syntax, but any legal JS function call can be reproduced in CoffeeScript. Making a class looks like this:
Foo = new JS.Class 'Foo',
initialize: (a, b) ->
@a = a
@b = b
# etc.
doSomething: (some, args) ->
# etc.
Although JS.Class is one of the more complex JS object systems, I've not found its performance to be a bottleneck in anything I've built. The performance problems are usually in the app itself.
The primary reasons I use it these days are:
* I use the package system to load various things
* I use JS.Test for all my JS projects, even non-JS.Class ones
* I use core.js when my app benefits from a sophisticated object system, but for smaller projects I just use JS constructors+prototypes
* The collections classes -- Enumerable, Set, Hash, Range -- are often useful to me
So I don't use it for everything, and use some bits way more than others, but those are my main reasons.