Considering I can't try it (the input of set S is invisible for me) and decide whether the following are helpful, I can only call them some tips for you:
When comparing two set: 'diminished' binary search: when you compare whether set A (x1...xn) is the subset of set B( y1...ym ), suppose you find yk = x1 (n <= m)
y1, y2, ...,yk, yk+1 ... ym
|
x1
then you can search x2 in the range of [yk+1, ym]. And the other are the same.
- When choosing two sets to compare:
Choose the large one(ie,
s1 and sk, then s1 and sk-1), you said you sort it by size and the large one is more likely to contain it.
- Sort Si? I am not sure whether sort
S can improve your performance and you can try without sorting or using a max-heap (see tip 4)
- Using max-heap:
compare the leaf with root and one of root's son... as the graph show).

If leaf doesn't removed (ie, isn't the subset of it's father), just remove it from heap and you can swap it to the place where the leaf is removed. (as following show)

Notice: Using heap can't guarantee all subset are removed.
- How to sort?: In your case, it seems that the counting sort is a suitable way to sort which is a linear sorting.
More:
1.And you said you are pruning tree, do you want Alpha–beta pruning ?
2.Efficient list intersection algorithm
Hope this can be helpful.