As concept, a list is viewed as a single unit. Thus, from the readability point of view, choosing one of your options, the single valid call is "a.ShouldBeEquivalentTo(b);".
Regarding others, they are obscure.
The plural form "ShouldAllBeEquivalentTo" is applied when comparing 2 collections of elements. I think, one would argue that we are comparing these group of strings (A) with these group of strings (B). What happened here, the group of strings was gathered as a whole single concept under a List data structure type. Thus, I would say it is wrong to use this call.
The last form implies 2 things. First, object "a" should be transformed into something. The name "Should" doesn't communicate anything. Afterwards, the result should be compared if it is equivalent with a list object "b". Logically, one should compare 2 objects of same type. There is no need for an additional transformation.
When reading code, I would prefer the following format:
A list "A" is equivalent with another list "B".
List<string> a = new List<string>() { "james", "wood" };
List<string> b = new List<string>() { "james", "wood" };
//creating "IsEquivalentTo" method
bool listsAreEqual = a.IsEquivalentTo(b);
//creating "IsEqualTo" method
listsAreEqual = a.IsEqualTo(b);
//overloading operator ==
listsAreEqual = (a == b);