Both uses of the
\let primitive often lead to the same result. Is this even true for every case? What was the thought process behind it. And if they are actually not equivalent, are there particular situations in which you can only use one or the other?
As your plenty and nice answers show, there are cases in which you clearly have to respect one of the variations (for instance regarding assignments to '=' and macros that check for spaces). These were totally understandable points and they explain a lot. Now, @Werner's answer confirmed one ingenuous thought of mine:
"The use of = is purely to emphasize the fact that an assignment is being made [...]"
Moreover Knuth himself seem to have intended the synopsis including the '=', though he also used the other way. Why did he include it then? It will probabilly have to do with the exact meaning of the TeX source snippet cited by @Werner. To be honest, I don't know WEB either, but if there is someone who does, can he explain it (in very easy terms) by adding an edit to his answer? New answers are clearly welcome too.
As an element of a gray area I found an example where using the syntax including the equal sign causes "difficulties":
If you have control sequences which need the 'csname-expandafter' mechanism, and you want to stick to the minimal exploitation of
\expandafter by saying
\expandafter\let\csname foo1\expandafter\endcsname\csname bar1\endcsname
you can't add an equal sign because it would distract TeX from reading the
\expandafters correctly. To get the equal sign work you would need to use the slightly unhandier version
\expandafter\let\csname foo1\expandafter\endcsname\expandafter=\csname bar1\endcsname