MapThread is a very good choice for generalized operations, when you not only pairing but also applying a function to pairs. In your simpler case you can also use Thread and Transpose (see blow). Relations between MapThread, Thread, and Transpose are
discussed here.
In[1]:= Transpose[{{a1, b1}, {a2, b2}, {a3, b3}}]
Out[1]= {{a1, a2, a3}, {b1, b2, b3}}
In[2]:= Thread[{{a1, b1}, {a2, b2}, {a3, b3}}]
Out[2]= {{a1, a2, a3}, {b1, b2, b3}}
In[3]:= Transpose[{{a1, b1, c1, d1}, {a2, b2, c2, d2}}]
Out[3]= {{a1, a2}, {b1, b2}, {c1, c2}, {d1, d2}}
In[4]:= Thread[{{a1, b1, c1, d1}, {a2, b2, c2, d2}}]
Out[4]= {{a1, a2}, {b1, b2}, {c1, c2}, {d1, d2}}
In[5]:= MapThread[List, {{a, b, c}, {x, y, z}}]
Out[5]= {{a, x}, {b, y}, {c, z}}