That is a good question!
First off, make sure that you assign a1,a2,a3
to the local scope via the var
keyword, which it seems you forgot. Otherwise performance can suffer tremendously.
As for the code-performance comparison. You can test/see the results here:

pure JavaScript:
var a1 = [1, 2],
a2 = [7, 8],
a3 = [];
for (var i = 0; i < a1.length; i++) {
a3.push([a1[i], a2[i]]);
}
JS/Native methods:
var a1 = [1, 2],
a2 = [7, 8],
a3 = [];
a3 = a1.map(function(e, i, a) {
return [e, a2[i]]
})
Of course there are more possible implementations, but the point is that probably no other implementation can beat a for-loop and straightforward packing, in O(n)-time as kindly pointed out by Travis J.
Engine/Optimized: V8 JavaScript Engine via Chrome v29