story
That's not true. Macaroons have identifier field. See the Readme doc in libmacaroons [0]. Direct quote:
> The public portion tells us which secret we used to create the macaroon, but doesn't give anyone else a clue as to the contents of the secret.
[0]: https://github.com/rescrv/libmacaroons/blob/master/README
I'd say that the biggest difference between JWT and Macaroons is that Macaroons are on one hand simpler than JWT (only one algorithm allowed) and on the other a lot more flexible. Caveats are just byte arrays and it's up to the user to decide how to verify them. The official docs present simple case of string predicates (user = Alice) but it'd be also possible to use something similar to Bitcoin Script. Of course this flexibility has a price: if using third party caveats (another unique aspect of Macaroons) all services must use the same caveat language.