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).