Скорее всего, дело в том, что массивы и объекты сравниваются по ссылкам. Проще говоря, если a и b ссылаются на один и тот же массив/объект, они равны. Иначе - нет.
Как найти разницу?
Смотря какой массив главный и что мы ищем. Предположим, что первый и ищем несовпадения значений. Тогда задача решается так:
function compare(arr, arr2) {
var l = arr.length;
for(var i = 0; i < l; ++i)
for(var a in arr[i])
if(arr2[i][a] !== arr[i][a]) return [i, a, arr[i][a], arr2[i][a]];
return false;
}