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}