Gremlin has a natural compilation to the common distributed vertex-centric computing model (bulk synchronous parallel for graphs). Thus, Gremlin works for both OLTP (graph databases) and OLAP (graph processors). The Apache distribution provides OLAP connectivity to Apache Hadoop, Spark, and Giraph.
Gremlin supports both imperative path expressions and declarative pattern matching.
Gremlin can be embedded in any host language. No "fat string" with result set. The user's database query code and data manipulation code are in the same language. There exists Gremlin-Java8, Gremlin-Groovy, Gremlin-Scala, Gremlin-Clojure, Gremlin-PHP, etc.
Gremlin is Turing Complete. Most any complex enough language is. However, Gremlin is related to a Turing Machine by a very simply mapping.
See http://arxiv.org/abs/1508.03843 for detailed specifics of the aforementioned benefits.
http://tinkerpop.incubator.apache.org/docs/3.0.0-incubating/...
Gremlin is an imperative "language", Cypher is declarative. The first lets you specify what will be performed, the latter describes the wished result and lets the query optimizer translate it to actual operations to retrieve it.
In a way, with Gremlin you have the absolute freedom on how to perform the traversal. With Cypher, you're working at a higher level with all the advantages of such approach (think SQL).
You want to match a complex pattern? Use declarative Gremlin so the query optimizer can figure out the best execution strategy for you. You have a highly custom path traversal? Use imperative Gremlin which gives you full control over the execution and provides you with everything you'd expect from a pipeline language. You have both? Combine them in a single traversal.
While Gremlin2 was an imperative query language, Gremlin 3 is a new type of query language that aims to combine the best of both worlds.