You can be pretty safe doing things explicitly because you know the values of the components in advance, but in code (i.e., macros) where you may not know what the user may wish to assign, you can get burned if you do not use the = as part of the assignment. Therefore, it is a good habit to use it.
Consider this case that misbehaves without the = in the \let assignment:
\documentclass{article}
\begin{document}
\def\doit#1{\let\X#1}
\doit{=} what?
\X oops
\end{document}

Compare it to the output, when the = is added to the \let syntax. Ah, much more expected:
\documentclass{article}
\begin{document}
\def\doit#1{\let\X=#1}
\doit{=} what?
\X much better
\end{document}

Here's another case to highlight the difference:
\documentclass{article}
\begin{document}
\def\deftok#1#2{\let#1= #2\empty}
\deftok\W{ }
\W success
\def\deftok#1#2{\let#1=#2\empty}
\deftok\W{ }
\W fail
\def\deftok#1#2{\let#1 #2\empty}
\deftok\W{ }
\W fail
\end{document}

In this example, not only is the = imperative, but so is the space following the =, if you wish to do assignments of spaces. The syntax also allows \deftok\W{} to assign \empty to \W.
So in summary, spaces and = tokens can be problematic assignments with \let and care must be exercised. I learned this lesson the hard way in V1.1 of my tokcycle package. "Once burnt, twice learnt!"
\let\A=\Bis clear while\let\A\Bis slightly faster. – John Kormylo Mar 03 '21 at 03:20