ClearAll[downsample];
downsample[arr_?ArrayQ, spec_Integer, offset_: 1] :=
downsample[arr, ConstantArray[spec, ArrayDepth[arr]], offset];
downsample[arr_?ArrayQ, spec_List, offset_: 1] :=
With[{parts = Span[offset, All, #] & /@ spec},
arr[[Sequence @@ parts]]];