Why do digital images use the concept of ‘Stride’?
"Stride" is something completely different then width and height of an image; it's a concept related to the logical storage layout (memory addressing) of the image data array on the physical memory accessed by a program, and not to the geometric properties of the image.

Stride means "the logical memory address distance between two successive pixels of the image on a given axis" (it's the value that should be added to the pointer (which points into the buffer of the image data on memory) that would then access the data of the next sample on the chosen image axis)

For example, consider a row-major image with width $w=3$ and height $h=2$:

$$\mathbb R^{2\times 3}\ni A = \begin{bmatrix}
a_{11} &amp; a_{12} &amp; a_{13}  \\
a_{21} &amp; a_{22} &amp; a_{23}  \end{bmatrix}$$

with the internal storage looking like

$$
\begin{matrix}
\text{storage loc.} &amp; \text{pixel} \\
0 &amp; a_{11}\\
1 &amp; a_{12}\\
2 &amp; a_{13}\\
3 &amp; a_{21}\\
4 &amp; a_{22}\\
5 &amp; a_{23}\\
\end{matrix}
$$

Here, the stride between elements of the same row (i.e. along the horizontal axis) is simply $s_x=1$. 

The stride along the vertical axis is exactly the width ($s_y=w=3$) of the image here, since the storage is row-major and compact.

Now, it's pretty common to see formats specify a step size for row lengths, because that typically has computational advantages. For example, if we took the same $A$ and said "the row length is padded to multiples of $4$", then the storage format for $A$ would look like
$$
\begin{matrix}
\text{storage loc.} &amp; \text{pixel} \\
0 &amp; a_{11}\\
1 &amp; a_{12}\\
2 &amp; a_{13}\\
3 &amp; \text{padding (don't care)}\\
4 &amp; a_{21}\\
5 &amp; a_{22}\\
6 &amp; a_{23}\\
3 &amp; \text{padding (don't care)}
\end{matrix}
$$

Now, the stride (i.e. how far are two elements successive on the same column apart?) is $s_y=4$, but the image width is still $w=3$, hence $s_y \mathbf \ne w$. I think this illustrates nicely why stride and dimensions are very different things.

This gets even more important for higher dimensional data. 

For example, imagine a video. We can think of it as sequence of images like $A$. Let's call it $B$:

$$B = \left(A_i\right)_{i=1,\ldots N}\quad\text,$$

with $A_i \in \mathbb R^{2\times 3}$ being our frames, and thus, $B$ having the first axis signifying "frame number", the second "column", the third "row index", 

$$ B \in \mathbb R^{N\times 2\times 3}\,\text.$$

Now, let's again assume the padded storage format. 

The row- and column-strides stay the same. 

But, what is the storage distance between two pixels with the same position, but in successive frames?

$$\begin{align}
s_t &amp;= h s_y\\
&amp;= 2 \cdot 4\\
&amp;=8
\end{align}
$$

Notice that we had to use height times y-stride here because we've defined our pictures to be row-major. In column-major format, we'd use width times x-stride. (and in time-major format: I'll leave this up for you as exercise in basic understanding of storage formats).