I should note that ruby invocation semantics can be configured on a per-context basis, so this discussion is mainly about what the default behavior should be. Even so, this has been an issue on which I have gone back and forth on several times.
As the documentation reflects, the first pass of therubyracer and therubyrhino made you explicitly return a proc or a lambda when implementing a method in javascript.
This is the approach which keeps most strictly to the actual JavaScript mechanics in which a method is merely a property which happens to be a function. That's why this way is probably the least surprising at first, and why I chose it as a starting point.
The reason that I added the alternate syntax was because I grew tired of uglifying my Ruby code merely to accomodate JavaScript. Logically, if not structurally, a block generated in a method is itself a method; it shares the very same binding, so why go through the ceremony of explicitly declaring it as a proc or lambda when really all you're doing is giving a hint to the JavaScript runtime about how it should be treated?
Of course there is no way to escape giving this hint in some form or another, It's just about shape it takes.
Thus far I've been pretty pleased with declaring a function property as a method that takes unused arguments. It is a little more magical that explicitly returning a proc, and it does crop up and bite you from time o time, but the behavior is predictable and the errors easy spot once you're used it, so overall I feel that it's been a good tradeoff. That said, it does seem to catch people by suprise, and indeed, some folks seem to really and truly dislike it.
Another potential solution would be to annotate the method, like:
class Mouth
Include JS::Embedded
function #behaves as a function no matter how many arguments
def sayHello
"Hello"