MallSerg,
Вы сравниваете во втором случае не примитивные данные, а объекты. Не вижу никакой магии, и, тем более, связи с сабжем. Все работает как ожидается. Легко проверить
a2 = new String ("Привет");
b2 = new String ("Привет");
alert ( " a2 === b2 " + ( a2.valueOf() === b2.valueOf()) );
// a2 === b2 true