For this, you could use the answer by J.M. to the question "Extruding along a path". The question here isn't a duplicate because it makes use of features in J.M.'s excellent answer that go beyond what the linked question actually asked for. In particular, that answer can deal with self-intersecting cross sectional curves, which is what you need for this question:
So what you have to do is: first copy the definitions in J.M.'s answer and then define your custom cross section:
cs = First@ Cases[ParametricPlot[ BSplineFunction[{{0., 0.}, {0.25, 0.25}, {0.25, 0.}, {0., 0.25}}, SplineClosed -> True][u] // Evaluate, {u, 0, 1}, MaxRecursion -> 1], Line[l_] :> l, Infinity]; Graphics3D[{EdgeForm[], TubePolygons[path, cs]}, Boxed -> False] 
For your arch example, it looks like this:
P[a_] := {-a, a, 1/2 a (8 - a)}; path = First@ Cases[ParametricPlot3D[P[a], {a, 0, 8}, MaxRecursion -> 1], Line[l_] :> l, Infinity]; Graphics3D[{EdgeForm[], TubePolygons[path, 5 cs]}, Boxed -> False] 