Okay, let's walk through your (first) redefinition to see what's happening:
1 \@ifundefined{comment}{}{% only do this if the comment environment has been defined
2 \renewenvironment{comment}[1]% redefining a 'comment' environment with one mandatory argument
3 {\begingroup\marginpar{\bgroup#1\egroup}}% put the mandatory argument inside a marginpar
4 {\endgroup}}% close the environment
Here's how LaTeX is thinking about what you've told it:
\begin{comment}{xyzzy}% <-- note the mandatory argument (runs line 3)
This is the contents of the environment.
\end{comment}% <-- this is where LaTeX runs line 4
Note that xyzzy is the mandatory argument (#1). The contents of the environment ("This is the...") are inserted between lines 3 and 4.
If you write the following in your document:
\begin{comment}% <-- missing mandatory argument
This is the contents of the environment.
\end{comment}
Then LaTeX will take the first token as the mandatory argument. In this case, the first token is T, the first character of the environment contents. So the letter T will be put in the margin and the remainder of the text will show up in a normal paragraph.
Okay, so to achieve what we want, the comment environment doesn't need any arguments. What we'll do is create a box, put the contents of the environment in that box, and then place that box in the margin.
Before we get started, if you're including this code in the preamble of a document, you'll need to wrap it all in \makeatletter and \makeatother since we'll be using commands with at signs (@) in their names.
First, let's create a box to store the material in:
\newsavebox{\marginbox}% contains the contents of the comment environment
Next, we'll start defining the comment environment. We'll set the environment begin and end commands to \relax. That way our \newenvironment command will be guaranteed to work.
\let\comment\relax% removes and previous definition of \begin{comment}
\let\endcomment\relax% removes any previous definition of \end{comment}
With that out of the way, we can define our new comment environment:
\newenvironment{comment}{%
\begin{lrbox}{\marginbox}% store the contents of the environment in a box named \marginbox
\begin{minipage}{\marginparwidth}% create a box with the same width as the marginpar width
\footnotesize% set any font or other style changes you'd like
}{% the following lines are for the \end{comment} command
\end{minipage}% close the minipage
\end{lrbox}% close the box
\marginpar{\usebox{\marginbox}}% typeset the box in the margin
}
Now, in your document, you can type:
\begin{comment}
This is a comment that gets printed in the margin.
\end{comment}
So just for ease of copying and pasting, here's what a complete document would look like:
\documentclass{article}
\makeatletter
\newsavebox{\marginbox}% contains the contents of the comment environment
\let\comment\relax% removes and previous definition of \begin{comment}
\let\endcomment\relax% removes any previous definition of \end{comment}
\newenvironment{comment}{%
\begin{lrbox}{\marginbox}% store the contents of the environment in a box named \marginbox
\begin{minipage}{\marginparwidth}% create a box with the same width as the marginpar width
\footnotesize% set any font or other style changes you'd like
}{% the following lines are for the \end{comment} command
\end{minipage}% close the minipage
\end{lrbox}% close the box
\marginpar{\usebox{\marginbox}}% typeset the box in the margin
}
\makeatother
\usepackage{lipsum}% just provides some filler text
\begin{document}
Hello, world!
\begin{comment}
This is a comment that gets printed in the margin.
\end{comment}
\lipsum
\end{document}