Scala is a statically-typed language with immutables, which most people consider a bridge language on the way to functional programming. Its biggest success stories are the Akka concurrency library and the Play framework, and Scala is used as the heart of Twitter. It's a very powerful language, but also very different from Java.
Groovy is an object-oriented language, but with some functional capabilities (like collect, findAll, and inject, which correspond to map, filter, and reduce). It cleans up Java in a variety of ways while still letting you integrate with Java on a line-by-line basis. Groovy classes can implement Java interfaces, instantiate and use Java classes, and vice versa. The blend is (almost) seamless. It's similarity to Java also makes it very easy for existing Java developers to learn.
The other major JVM language is Clojure, which is a LISP on the JVM. It's a pure functional language with immutables. If our next major paradigm shift is to functional programming, as so many have said, then Clojure is a great way to get there.
If you're considering concurrency as your biggest motivation and therefore thinking about Scala or Clojure, let me mention that
the GPars library has actors, dataflows, concurrent collections, and everything else you might need. The other "breakout" projects in the Groovy ecosystem are Grails (which is a web framework but more than that), Gradle (the build tool gradually replacing
Maven in the open source world), and Spock (the
unit testing library).
Btw, there's no real rivalry among the three languages. Which you choose is largely a question of style and personal preference. I will say that the Groovy community is very friendly and helpful, which was a plus for me.