Though not stated in the original question, ultimately I wanted something a bit more dynamic: namely, I wanted the redefinition of \item to be able to persist for more than just its first occurrence. I also wanted something that will behave as expected if nested within another list.
Prior to seeing @werner 's and @wright 's solutions, this is what I wound up working out:
\documentclass{article}
\makeatletter
\let\ae@original@item\item
\newenvironment{myenum}[1]
{\begin{enumerate}
\let\item\ae@original@item
\def\ae@how@far@advanced{1}%%'
\newif\ifae@unfinished@
\begingroup
\ae@unfinished@true
\def\ae@item[##1]{%%'
\@item[##1] \rule[-2ex]{0.8pt}{5ex}%%'
\ifnum\ae@how@far@advanced=#1\relax
\ae@unfinished@false\endgroup
\fi
\edef\ae@how@far@advanced{\number\numexpr\ae@how@far@advanced+1\relax}\ignorespaces}
\def\item{\@ifnextchar [%%]
\ae@item{\@noitemargtrue \ae@item[\@itemlabel]}}%%'
}%%'
{\ifae@unfinished@\endgroup\fi
\end{enumerate}}
\makeatother
\begin{document}
\begin{myenum}{5}
\item A
\item [test] B
\item C
\begin{myenum}{2}
\item Bc
\item A
\item C
\item D
\end{myenum}
\item D
\item E
\item F
\end{myenum}
\end{document}

I suppose that \ae@how@far@advanced could really have been a counter. But, I nevertheless need something since I'm counting occurrences of \item and not the value of enumi (and family), which isn't advanced when \item[...] is used.
I like both the solutions offered. @wright 's solution nicely shows how to avoid my use of \begingroup and \endgroup. But, I'd prefer not to have call another package. @werner 's solution is very elegant in how it avoids the call to \@ifnextchar and manages to test for an empty argument.
I chose to post my own solution because I eventually saw how I was
- misunderstanding when and what is getting expanded and
- misunderstanding that
\@ifnextchar was not ever going to see the next character after my macro since I'd thrown a bunch of noise in the way.
But I was able work out a solution with \@ifnextchar and to properly redirect things.
\item, I didn't think I would need to go the\LetLtxMacroroute. – A.Ellett Aug 03 '13 at 03:25