I suspect that disentangling complex piecewise formula algorithmically is not as robust as humans might think. There are probably cases where pulling apart a piecewise defined formula into a sum of simple piecewise expressions does not help, but it does here. Note that in the OP Sum[] handles the Piecewise[] well enough to produce a DifferenceRoot[]. The complexity I speak of is propagated to the DifferenceRoot[]. FunctionExpand[] cannot expand the one produced in the OP, but it can expand the two produced separately from the two formulas in the OP's piecewise a[n].
a[n_] = Piecewise[{{5 n + 1, Mod[n, 2] == 0}, {2^(n/2), Mod[n, 2] == 1}}];
pwApart = HoldPattern@Piecewise[lis_, 0] :> (Piecewise[{#}, 0] & /@ lis);
s[n_] = Sum[
a[j] /. pwApart
, {j, 1, n}] // FunctionExpand // Total // Simplify
(*
1/8 (-7 + 7 (-1)^n - 8 Sqrt[2] + 2^(3 + n/2) - (-1)^n 2^(3 + n/2) +
2^((5 + n)/2) + (-1)^n 2^((5 + n)/2) + 2 (7 + 5 (-1)^n) n + 10 n^2)
*)
If you don't like (-1)^n, convert it to Piecewise[]:
Assuming[n \[Element] Integers && n > 0,
s[n] /. (-1)^n :> Piecewise[{{-1, Mod[n, 2] == 1}}, 1] //
PiecewiseExpand // Simplify
]
(*
Piecewise[
{{(1/4)*(-7 - 4*Sqrt[2] + 2^(3 + n/2) + 2*n + 5*n^2), Mod[n, 2] == 1}},
Sqrt[2]*(-1 + 2^(n/2)) + 3*n + (5*n^2)/4]
*)
Piecewise[] has its own evaluation/display rules that seem to make the exact desired form in OP impossible to achieve. (In particular, there is always a default value, which is displayed with the condition True.) If you don't like the above, see if the following suits you:
s[n] /. (-1)^n :>
Piecewise[{{-1, Mod[n, 2] == 1}, {1, Mod[n, 2] == 0}},
Indeterminate]