In the following, other is a set or set-like object.
Set.prototype.equals(other)
Return true if this set equals other mathematically, and return false otherwise.
This is not same to set1==set2 or set1===set2.
Result of set1.equals(set2) should be same to set1.isSubsetOf(set2)&&set1.isSupersetOf(set2).
Set.prototype.isProperSubsetOf(other)
Return true if this set is a proper subset of other, and return false otherwise.
"A is a proper subset of B" means "A is subset of B, and A does not equal B".
Set.prototype.isProperSupersetOf(other)
Return true if this set is a proper superset of other, and return false otherwise.
These are very easy to write already: equals is this.size === other.size && this.isSubsetOf(other), isProperSubsetOf is this.size < other.size && this.isSubsetOf(other), etc.
I don't think it's worth adding new methods for this given how easy these things are to express already.
Even though there are simple workarounds, I understand why people want methods that align well with these concepts. The only thing that bothers me is the meaning of equals. You know, Set in JavaScript is actually ordered, so it's a bit strange that new Set([1, 2]).equals(new Set([2, 1])) would return true but yield different iteration results.
I don't find that to be too weird. Yes, they're ordered, but we, the programmers are supposed to treat it as if the order is undefined. That's why no methods are provided to index into a set, or modify the ordering, etc.