I believe I have come up with a reasonable, somewhat concise, technical explanation. We are dealing with a CLI (Command line interpreter) and the results of command substitution depend on the phase of interpretation when the parser encounters the substitution token "$(".
Simple assignment; variable "cmd" has the string "date".
In the first case, the parser (which reads from left to right) encountered a token "=" so it knows it is expecting an equivalence string for a variable assignment.
In the second case, the parser had not determined the type of command it was dealing with, when it hit "$(".
In both cases the parsing pauses and a subshell environment is created. The string between the parentheses is interpreted by the CLI and the contents of stdout is used to replace "$(", the corresponding, unquoted right parenthesis and everything between. Now, the CLI picks up where it left off. In this example, in both instances, stdout contains the string "date". In the first instance, the CLI was expecting an equivalence string, so it interprets "var=date" as assigning the string "date" to variable "var".
In the second instance, the CLI interprets "date". Since date is a valid program in the current path, that program is invoked.
So, nothing is actually wrong, it's just the way the interpreter carries out the substitution.