I understand that you can get a list of leads under Programs and Static Lists (/rest/v1/list/{listId}/leads.json), are there other parent objects under which I can query for groups of leads in the same way? E.g. Smart Lists, Campaigns
Smart Lists are not yet generally available via API.
In Marketo, Campaign "membership" is not managed in the way you seem to think. It does exist in a sense, but there would be little to no utility to such a query. Programs, Lists, and Smart Lists are the collection types you want.