Ich vermute, dass die Ursache ein implizit aufgerufenes `\item` oder vielmehr `\@item` ist, das in `alltt` aufgerufen wird:
\newenvironment{alltt}{%
\trivlist
\item\relax
`\@item` enthält in seiner Definition
\everypar{%
\@minipagefalse
und tatsächlich sorgt der nächste Absatzbeginn dafür, dass `\if@minipage` falsch ist:
\documentclass{article}
\makeatletter
\newcommand*\minipagetest{%
\if@minipage
\@latex@warning{in minipage}%
\else
\@latex@warning{nicht in minipage}%
\fi
}
\makeatother
\begin{document}
\makeatletter
\@minipagetrue
\minipagetest % drin
\begin{itemize}
\minipagetest % drin
\item \minipagetest % drin
\par\leavevmode\minipagetest % draußen
\end{itemize}
\@minipagetrue
\minipagetest % drin
\begin{itemize}
\minipagetest % drin
\item \minipagetest % drin
\end{itemize}
\minipagetest % draußen
\end{document}
Bleibt noch die Frage, warum die Gruppe überlebt wird. Da ich vergessen hatte, das eher hinzuzufügen, hat @Ulrike den Grund in [ihrer Antwort](texwelt.de/wissen/fragen/2877#2879) erfreulicherweise beigesteuert.
----------
Das gleiche passiert in `minipage` selbst (durch den Aufruf von `\@setminipage`) übrigens auch:
\documentclass{article}
\makeatletter
\newcommand*\minipagetest{%
\if@minipage
\@latex@warning{in minipage}%
\else
\@latex@warning{nicht in minipage}%
\fi
}
\makeatother
\begin{document}
\begin{minipage}{.333\linewidth}
\minipagetest % drin
\par\leavevmode
\minipagetest % draußen
\end{minipage}
\end{document}