At first glance, I'm seeing some unnecessary constructors that may be masking the actual behavior:
There's no need to pass the sString and sString2 assignments to new String(); the operations themselves return strings, so you're just constructing a new string from an existing string. This doesn't break anything, but is unnecessary.
The Array constructor, on the other hand, seems to be the cause of the behavior you're reporting. As it turns out, the Array constructor is literally never needed:
var myArray = new Array();
// should be:
var myArray = [ ];
Same goes for the Object constructor:
var myObject = new Object();
// should be:
var myObject = { };
So, to be precise, sString.split(" ") returns an array. Unlike passing a string to new String(), which just turns one string into another string, passing an array to new Array() returns a nested array. For example:
var sq = new Array("one two three".split(" "));
// is equivalent to:
var sq = [ ["one", "two", "three"] ];
As a result, sq.join(" AND ") is telling the outer array to join itself... since that array only has one value, it simply returns that value: the inner array.
In short, unless I'm reading your code wrong, if you keep the code exactly the same but lose each constructor (or, at a minimum, the Array constructor), it should do what you're expecting it to.