It might not be as 'hard' conceptually to use, but it just has some dirty areas that are sort of make it unpleasant to use so it leaves a bad taste in some programmers mouths.
* 0 == '' is true, really? what about 0 == '0', also true!
* What is 'this'? Well it depends on where you are and there is a long article someone posted somewhere. To figure it all out...
* Brace block != new scope.
* No nested namespaces -- all is in a global scope.
And there are others. Again. Not hard just kind of unpleasant, therefore CS.
Because someone wanted to? Folks are using it. Isn't that enough for you? On top of that, it's quite a nice little language. Comprehensions are very convenient along with regular iteration. And you get most of the jslint passing stuff for free. Plus, if you don't like it, don't use it.
I suggest you play with it a bit. It really is a "nicer javascript". The only thing it's missing is support, primarily in the form of debugging tools. But that's coming.
Experimenting and trying out new things is good in principle. Even if you don't agree with this, here's an example of JavaScript taking feedback from CoffeeScript: http://brendaneich.com/2010/11/paren-free/
* Output in the REPL is now colorized, like Node's is.
* All text/coffeescript tags should now execute in the order they're included.
* Function calls can be used as default values for parameters.
* Splatted parameters are declared local to the function.