This is a bit of a tangent to the specific issue reported here, but one thing we have seen with these custom extension methods is that unit testing becomes difficult. So for example, if our unit tests are using in-memory objects then ContainsAll won't work.
Here are two alternatives to ContainsAll using standard LINQ/.NET framework:
1) Support IsSubsetOf on two HashSets – this is the most natural C# interpretation of ContainsAll ... $all is really a Subset predicate.
2) Support !myValues.Except(collection.Array).Any() as a $all implementation
Of course neither would support regexes, so perhaps ContainsAll will still be needed for Regexes on $all.