Not a complete answer, but I think this can get you close to the solution.
If you use images instead of text, there's less (or even no) jumping around. I only worked on the ticks.
To have the ticks numbers rasterized, I made a variation of this, but there's probably a simpler way (I didn't try to put your ticks specification, but it should be easy).
Then, I played with the sizes and resolutions, and my end result still needs a lot of tuning: line thickness / darkness are a little lost in rasterings and resizings, numbers are flickering (but I do believe that they are not jumping; you tell me...)

I hope this helps as a start:
tickF[div1_, div2_: - 1] := (If[div2 == -1, Thread[{#, #, {.02, 0}}, List, 2] &@FindDivisions[{#1, #2}, div1], Join @@ MapAt[Join @@ # &, {Function[{p}, {p, Magnify[Rasterize[p, RasterSize -> 150], 3], {.02, 0}}] /@ #[[1]], Thread[{#, "", {.01, 0}}, List, 2] & /@ #[[2]]} &@ FindDivisions[{#1, #2}, {div1, div2}], {2}]]) & examplePlot[j_] := ParametricPlot3D[ Evaluate@Table[{k, s, Sin[k s] + k s/50}, {k, 7}], {s, 0, 4 Pi}, PlotRange -> {{-2, 4 Pi}, {0, 4 Pi}, {-2, 4}}, BoxRatios -> {1, 3, 1}, PlotStyle -> Array[Hue, 7, {0, 0.75}], PlotPoints -> 150, MaxRecursion -> 5, BaseStyle -> {FontSize -> 14, FontFamily -> "Helvetica", FontTracking -> "Plain", TextJustification -> 0, PrivateFontOptions -> {"OperatorSubstitution" -> False}}, ImageSize -> {3*700, 3*300}, Ticks -> Evaluate@({(t1 = {##}; tickF[8, 5][##]) &, (t2 = {##}; tickF[8, 5][##]) &, (t3 = {##}; N /@ tickF[8, 5][##]) &}), ViewPoint -> {3, 0.4 + 0.5 Sin[j], 0.5 + 0.2 Cos[j]}, RotationAction -> "Clip", ViewVertical -> {0, 0, 1}, ViewAngle -> 0.22, AxesEdge -> {{1, -1}, Automatic, {1, -1}}, AxesLabel -> {"Axis 1", "Axis 2", "Axis 3"}]; animExample = Table[ImageResize[Rasterize[examplePlot[j], "Image"], 700], {j, 0, 2 \[Pi], \[Pi]/25}];
EDIT
Still based on rasterization, but better looking:

tickF[div1_, div2_: - 1] := (If[div2 == -1, Thread[{#, #, {.02, 0}}, List, 2] &@FindDivisions[{#1, #2}, div1], Join @@ MapAt[Join @@ # &, {Function[{p}, {p, p, {.02, 0}}] /@ #[[1]], Thread[{#, "", {.01, 0}}, List, 2] & /@ #[[2]]} &@ FindDivisions[{#1, #2}, {div1, div2}], {2}]]) & examplePlot[j_, factor_] := ImageResize[ Rasterize[ ParametricPlot3D[ Evaluate@Table[{k, s, Sin[k s] + k s/50}, {k, 7}], {s, 0, 4 Pi}, PlotRange -> {{-2, 4 Pi}, {0, 4 Pi}, {-2, 4}}, BoxRatios -> {1, 3, 1}, PlotStyle -> Array[{Hue[#], Thickness[0.006]} &, 7, {0, 0.75}], PlotPoints -> 150, MaxRecursion -> 5, BaseStyle -> {FontSize -> factor*14, FontFamily -> "Helvetica", FontTracking -> "Plain", TextJustification -> 0, PrivateFontOptions -> {"OperatorSubstitution" -> False}}, ImageSize -> {factor*700, factor*300}, ViewPoint -> {3, 0.4 + 0.5 Sin[j], 0.5 + 0.2 Cos[j]}, RotationAction -> "Clip", ViewVertical -> {0, 0, 1}, ViewAngle -> 0.22, AxesEdge -> {{1, -1}, Automatic, {1, -1}}, AxesLabel -> {"Axis 1", "Axis 2", "Axis 3"}, Ticks -> Evaluate@({(t1 = {##}; tickF[8, 5][##]) &, (t2 = {##}; tickF[8, 5][##]) &, (t3 = {##}; N /@ tickF[8, 5][##]) &}), BoxStyle -> Directive[Thickness[0.003]] ], "Image", RasterSize -> 4000], 700, Resampling -> "Linear"] animExample6 = Table[examplePlot[j, 6], {j, 0, 2 \[Pi], \[Pi]/25}]; Export["animExample.GIF", animExample6, "DisplayDurations" -> 0.15, "AnimationRepetitions" -> Infinity]
(not sure if factor is doing that much... but at least it is better looking, simpler and faster)
ViewPointchanges smoothly? I agree that true randomness is out of the question, I should have said that there is an undesirable noisy component to the position of the text. $\endgroup$