For some reason I can't really well understand, in a \node
the parameters \spaceskip
and \xspaceskip
are set to non zero values; when \spaceskip
is non zero, TeX uses it for the interword space instead of the default stored in the current font information.
Try the following example
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\tikz{\node[text width=3cm]{\ttfamily
totot\\
t t t\\
\the\spaceskip\ \the\xspaceskip\\
\spaceskip=0pt totot\\t t t};}
\end{document}
and see that setting \spaceskip=0pt
cures the problem.

The option to set is text badly ragged
(apparently TikZ doesn't like normal ragged right and adds to the LaTeX definition also the Plain TeX one when calling text ragged
which is the default).
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node[text width=1cm,font=\ttfamily,text badly ragged]{totot\\t t t};
\node[font=\ttfamily] at (1.5,0){\parbox{1cm}{totot\\t t t}};
\end{tikzpicture}
\end{document}

If an option for deciding about the \spaceskip
doesn't exist in TikZ, it should.
\begin{tikzpicture} \node[text width=1cm,font=\ttfamily]{t t t}; \node[font=\ttfamily] at (0,0.5) {t t t}; \end{tikzpicture}
when you tell TikZ to respect line breaks viaalign
ortext width
internally it switches from an\hbox
to aminipage
environment.