You could use some tricks from Macro to capture until end-of-line as argument to capture each \item and process it.
Below I've provided \boxitem and \varboxitem that would process each \item as either a boxed \parbox or varwidth box (of appropriate maximum width):

\documentclass{article}
\usepackage{xparse,environ,varwidth}
\usepackage[nopar]{lipsum}
\ExplSyntaxOn
\NewEnviron{myitemize}[1][]
{
\keys_set:nn { xotix/itemize } { #1 }
\seq_set_split:NnV \l_xotix_itemize_input_seq { \item } \BODY
\seq_pop_left:NN \l_xotix_itemize_input_seq \l_tmpa_tl
\tl_use:N \l_xotix_itemize_pre_tl
\seq_set_map:NNn
\l_xotix_itemize_output_seq
\l_xotix_itemize_input_seq
{ \exp_not:n { \__xotix_itemize_do:n { ##1 } } }
\seq_use:NV \l_xotix_itemize_output_seq \l_xotix_itemize_sep_tl
\tl_use:N \l_xotix_itemize_post_tl
}
\seq_new:N \l_xotix_itemize_input_seq
\seq_new:N \l_xotix_itemize_output_seq
\cs_generate_variant:Nn \seq_set_split:Nnn { NnV }
\cs_generate_variant:Nn \seq_use:Nn { NV }
\keys_define:nn { xotix/itemize }
{
pre .tl_set:N = \l_xotix_itemize_pre_tl,
post .tl_set:N = \l_xotix_itemize_post_tl,
sep .tl_set:N = \l_xotix_itemize_sep_tl,
action .code:n = \cs_set_eq:NN \__xotix_itemize_do:n #1,
action .initial:n = \use:n,
}
\ExplSyntaxOff
\NewDocumentCommand{\boxitem}{m}{%
\item \fbox{\parbox[t]{\dimexpr\linewidth-2\fboxsep-2\fboxrule}{\strut #1\strut}}%
}
\NewDocumentCommand{\varboxitem}{m}{%
\item \fbox{\begin{varwidth}[t]{\dimexpr\linewidth-2\fboxsep-2\fboxrule}
\strut #1\strut
\end{varwidth}}%
}
\begin{document}
\begin{myitemize}[
action=\boxitem,
pre=\begin{itemize},
post=\end{itemize},
]
\item First
\item Second
\item Last
\end{myitemize}
\begin{myitemize}[
action=\varboxitem,
pre=\begin{itemize},
post=\end{itemize},
]
\item First
\item Second
\item Last
\end{myitemize}
\clearpage
\begin{myitemize}[
action=\boxitem,
pre=\begin{itemize},
post=\end{itemize},
]
\item First
\item \lipsum[2]
\item Last
\end{myitemize}
\begin{myitemize}[
action=\varboxitem,
pre=\begin{itemize},
post=\end{itemize},
]
\item First
\item \lipsum[2]
\item Last
\end{myitemize}
\end{document}
\boxitem (which uses \parbox) sets its contents in a fixed-width box, while \varwidthbox may shrink if the contents is less than the specified maximum width. \struts have been added to allow for proper spacing around the baselines of the \items.
Of course, since all items are boxed, they won't break across the page boundary.