The first syntax is a tad longer, but its much more useful; you can define any method with the name of an HTTP verb for that path, and you can also define a filter parameter that will be queried before the path is matched. The filter lets you do whatever pre-processing you want, so you could filter out requests from a specific user-agent for example, or all URLs that use mixed case, or anything else you can think of.
That looks really cool; how's that been working out? Is that in production? If Ruby had Gambit Scheme's serializable continuations, that would be pretty interesting times.
We're not yet using it in production, its only a few weeks old, but we will be in some of the things we're working on.
One of the main benefits is letting us run objective-j and cappuccino on the server, letting us share application data models in the client and the server.
A full web service to implement '/add/1/2' is just
require 'sinatra'; get('/add/:a/:b') { params[:a].to_i + params[:b].to_i }