Here is a programmatic step-by-step approach. Possibly there are shorter routes though.
In[1]:= f[a_] := Array[a, 3]
vecs = f /@ {a, b, c}
Out[2]= {{a[1], a[2], a[3]}, {b[1], b[2], b[3]}, {c[1], c[2], c[3]}}
In[6]:= pairs = Partition[vecs, 2, 1, 1, vecs]
Out[6]= {{{a[1], a[2], a[3]}, {b[1], b[2], b[3]}}, {{b[1], b[2],
b[3]}, {c[1], c[2], c[3]}}, {{c[1], c[2], c[3]}, {a[1], a[2],
a[3]}}}
In[24]:= tpairs = Transpose[pairs, {1, 3, 2}]
Out[24]= {{{a[1], b[1]}, {a[2], b[2]}, {a[3], b[3]}}, {{b[1],
c[1]}, {b[2], c[2]}, {b[3], c[3]}}, {{c[1], a[1]}, {c[2],
a[2]}, {c[3], a[3]}}}
In[25]:= cols = Apply[Plus, tpairs, {2}]
Out[25]= {{a[1] + b[1], a[2] + b[2], a[3] + b[3]}, {b[1] + c[1],
b[2] + c[2], b[3] + c[3]}, {a[1] + c[1], a[2] + c[2], a[3] + c[3]}}
In[26]:= colmat = Transpose[cols]
Out[26]= {{a[1] + b[1], b[1] + c[1], a[1] + c[1]}, {a[2] + b[2],
b[2] + c[2], a[2] + c[2]}, {a[3] + b[3], b[3] + c[3], a[3] + c[3]}}