Yeah, it is a bit awkward. After reading this article a few years back, I wrote a simpler implementation of curry that transforms the function itself, rather than being called from within it, e.g.
var add = curry(function(a,b,c) { return a + b + c; });
http://osteele.com/sources/javascript/functional/