This is a simple though somewhat wasteful solution:
symmSum[l_List] := Take[l + Reverse[l], Ceiling[Length[l]/2]] It will give you the middle element twice, not once. Is it important that you only get c (and not 2c) when applying this function to {a,b,c,d,e}? That's easy to do (avoiding computing elements twice is also easy), but will make the function slightly longer. These solutions all use Length though.
Here's a pattern-based solution which avoids Length:
iter[{result___}, {s_, mid___, e_}] := iter[{result, e + s}, {mid}] iter[{result___}, {}] := {result} iter[{result___}, {mid_}] := {result, mid} symmSum[l_List] := iter[{}, l] You may want to modify this as
symmSum[l_List] := Block[{$IterationLimit = Infinity}, iter[{}, l]] to make it work for arbitrarily long lists.