Auch wenn ich bezüglich der Sinnhaftigkeit (vor allem der doppelten Nummerierung) sehr skeptisch bin, lässt es sich notfalls so realisieren:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{framed}
\usepackage[framed]{ntheorem}
\usepackage{xcolor}
\colorlet{graylight}{black!10}
\theoremstyle{break}
\def\theoremframecommand{\colorbox{graylight}}
\newshadedtheorem{theorem}{Satz}
\begin{document}
\begin{enumerate}
\item \parbox[t]{\linewidth}{%
\vskip-.625em% Geschätzt!
\vskip-\baselineskip\vskip-\theoremframepreskipamount
\begin{theorem}[Phythagoras]
$a^2+b^2=c^2$
\vskip-\baselineskip\vskip-\parskip\end{theorem}}
\item \parbox[t]{\linewidth}{%
\vskip-.625em% Geschätzt!
\vskip-\baselineskip\vskip-\theoremframepreskipamount
\begin{theorem}[xyz]
bla bla bla
\vskip-\baselineskip\vskip-\parskip\end{theorem}}
\end{enumerate}
\end{document}
![alt text][1]
Natürlich sollte man die ganzen negativen `\vskip` ggf. in einer eigenen Umgebung verpacken. Die `\vskip` vor `\end{theorem}` sind übrigens nur notwendig, weil `theorem` am Ende recht unmotiviert eine Leerzeile einfügt. Wenn die bleiben soll, entfällt `\vskip-\baselineskip\vskip-\parskip`.
Sehr schöne, farblich hinterlegte oder umrandete *Theorem*-Umgebungen bekommt man übrigens mit [`tcolorbox`](http://www.ctan.org/pkg/tcolorbox).[`tcolorbox`](http://www.ctan.org/pkg/tcolorbox).
Fragt mich bitte nicht, woher der als geschätzt markierte Offset-Wert stammt. Der ist wirklich geschätzt, scheint aber sowohl bei `10pt`, `11pt` als auch `12pt` zu passen. Wenn man die ganze vertikale Verschiebung sauber in einer Umgebung verpackt, könnte man diesen Wert als Default für ein optionales Argument verwenden, mit dem man notfalls noch manuell eingreifen könnte.
[1]: http://texwelt.de/wissen/upfiles/test16_4.png