Reshape only works with contiguous sub-array.  However, here overlapping sub-arrays need to be supported.  You can't do that with reshape.  

So take the array:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

You could reshape it to something like:
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]. [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]]

But this function needs to be able to do something like this (with an overlap of two point):
[[0, 1, 2, 3, 4], [3, 4, 5, 6, 7], [6, 7, 8, 9, 10]. [9, 10, 11, 12, 13], [12, 13, 14, 15, 16], [15, 16, 17, 18, 19]]

Reshape cannot handle the second case.  Strides are needed.  

I could conceivably use reshape if noverlap = 0, but in this case the stride_windows function is basically doing that already, so it would make the code more complicated for no benefit.