They do indeed generate revenue for the publishers, because a fraction of the users actually click through into the article. Without the snippet promoting it, the article would see much fewer traffic from Google.
The snippet is almost always generated from the first search result, which garners the lion’s share of the clicks. Now, many find what they were looking for in the snippet and forego the click.