Ich habe eine neue Umgbung mit Befehlen des Paketes `xparse`
definiert. Mit dabei sind konditionelle Abfragen, die das
optionale Argument prüfen.
Urspünglich wollte ich mir ja Ti*k*Z zu nutze machen, aber dafür
reicht mein Foo nicht aus. Vielleicht postet ja einer der anderen
Helfer eine Ti*k*Z-lastige Lösung, und liefert ein schickeres
Ergebnis. Vielleicht fallen dieser Person dann auch bessere Namen
ein, meine Phantasie ist heute sehr begrenzt ;-)
Wie ich sehe wurde dein Problem schon ganz gut gelöst, schau dir bitte trotzdem mal `xparse` an. Wenn die anderen nichts dagegen haben, mops ich mir die Lösung für das zweite Problem. Dann ist diese Antwort auch vollständig. 
    \listfiles
![alt text][1]
    \documentclass[10pt,fleqn]{scrreprt}
    \usepackage[ngerman]{babel}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{blindtext}
    %\usepackage{showframe}
    
    \usepackage{geometry}
    \geometry{includehead,includefoot,tmargin=20mm,bmargin=20mm,lmargin=40mm,rmargin=20mm}
    
    %\setlength{\parindent}{0pt}
    %\setlength{\parskip}{10pt}
    \KOMAoption{parskip}{half}
    
    
    \newenvironment{umg1}{\underline{Name1:}}{}
    
    \usepackage{mdframed}
    \usepackage{xparse}
    \usepackage{tikz}
    \newlength{\putoutside}
    \setlength{\putoutside}{-1em}
    	\newcommand{\JBenvname}{JB:}
    \NewDocumentEnvironment{JB}{ o }{
    	\newcommand{\JBsymbol}{}
    	\IfNoValueTF {#1}{}{%else
    		\ifblank{#1}{
    			\renewcommand{\JBsymbol}{$\downarrow$}
    		}{%else
    			\renewcommand{\JBsymbol}{#1}
    		}}
    		\par\medskip
    		\hspace{\putoutside}$\llap\JBsymbol\quad$\textbf{\JBenvname}%
    	}{\par\vspace{\intextsep}}
    
    
    
    
    
    
    \usepackage{framed}
    \definecolor{shadecolor}{rgb}{.85,.85,.85}
    \newlength{\moveout}
    \setlength{\moveout}{9cm}
    \newenvironment{umg2}{\begin{shaded} \underline{Name2:}}{\end{shaded}}
    
\mdfdefinestyle{maja}{backgroundcolor=shadecolor,
    	leftmargin=-\moveout,innerleftmargin=\moveout,
    	rightmargin=-\moveout,innerrightmargin=\moveout,
    	hidealllines=true
    }
    \NewDocumentEnvironment{maja}{ o }{
    	\renewcommand{\JBenvname}{Maja:}
    \begin{shaded}
    			\surroundwithmdframed[style=maja]{JB}
    			\begin{JB}[#1]%
    }{\end{JB}}
    
    
    \begin{document}
    \begin{JB}
    		}{\end{JB}
    \end{shaded}
    }
    
    
    	\begin{document}
    	\begin{JB}
    		Hier steht text, aber auch etwas Mathe, es wurde
    		kein optionales Argument angegeben. 
    		\[ a \neq b\]
    
    		Und auch ein neuer Absatz ist möglich.
    	\end{JB}
    
    	\blindtext
    
    	\begin{JB}[]
    		Hier wurde das optionale Argument zwar angegeben,
    		aber leer gelassen. Hier wird der Standard
    		\verb+\downarrow+ genutzt
    	\end{JB}
    
    	\begin{JB}[$\rightarrow$]
    		Hier wird das optionale Argument per Hand
    		gesetzt. Ein Rechtspfeil ist das Ergebnis.
    		\begin{equation}
    			b = c
    		\end{equation}
    	\end{JB}
    
    
    	\blindtext[3]
    
    \begin{maja}
    	ohne Opt A:
    	Diese Umgebung verhält sich genau wie die obere,
    		hat aber einen anderen Namen, und wurde mit
    	\texttt{mdframed} umgeben.
    	\[ E = mc^2\]
    
    	Natürlich sind auch hier Absätze möglich, und die
    		\texttt{colorbox} rund rum. 
    	Umgebung bricht bei Bedarf auch um. Allerdings sieht das
    	doof aus. 
    \end{maja}
    
    
    	\begin{umg1}
    		Text. Der Text kann auch über mehrere Zeilen gehen. Und auch Mathe-Umgebungen haben wie:
    		\[1+1=2\]
    		Oder auch was anderes.
    	\end{umg1}
    
    \begin{umg2}
    Text. Der Text kann auch über mehrere Zeilen gehen. Und auch Mathe-Umgebungen haben wie:
    \[1+1=2\]
    
    Oder auch was anderes.
    \end{umg2}
    
    	\begin{maja}[]
    	mit opt A, aber leer; default \texttt{downarrow}
    \end{maja}
    
    \blindtext[3]
    \begin{maja}[$\leftarrow$]
    	Nun mit Linkspfeil
    \end{maja}
    \end{document}
  [1]: http://texwelt.de/wissen/upfiles/majaUmgebung.png