Adapting the second part of @Werner's answer to your linked question with the optional plain text sort, the following might suit your needs.
For each formatted command you will have to define a separate command with the same name but with the suffix plain that defines the plain text used for sorting. The \sortitem command has been modified so that if one argument is passed, it is first tested to see if it is a command (courtesy of an adapted form of this answer by egreg). If so, the plain variant is tested and, if it exists, that is used as the sort label. If not, the passed argument is used.
Your MWE (with a few additional test entries):
\documentclass{article}
\usepackage{datatool}% http://ctan.org/pkg/datatool
%from egreg at: https://tex.stackexchange.com/a/42337/89497
\makeatletter
\begingroup\lccode`\|=`\\
\lowercase{\endgroup\def\removebs#1{\if#1|\else#1\fi}}
\newcommand{\macroname}[1]{\expandafter\removebs\string#1}
%adapted from https://tex.stackexchange.com/a/42337/89497
\newif\ifisamacro
\begingroup\lccode`\|=`\\
\lowercase{\endgroup\def\nameifmacro#1#2\nil{\if#1|#2\else\relax\fi}}
\makeatother
\newcommand{\sortitem}[2][\relax]{%
\DTLnewrow{list}% Create a new entry
\ifx#1\relax%no option passed...see if #2 is a macro and has a plain-text variant
\edef\testifmacro{\expandafter\nameifmacro\string#2\nil}%test if it is a macro. will be the name if it is a macro, \relax if not
\expandafter\ifx\testifmacro\relax%then it is not a macro...
\DTLnewdbentry{list}{sortlabel}{#2}%
\else%it is a macro
\expandafter\ifcsname\macroname{#2}plain\endcsname%then it has a plain text option defined
\edef\rslt{\noexpand\DTLnewdbentry{list}{sortlabel}{\expandafter\expandafter\expandafter\expandonce\expandafter\csname\macroname{#2}plain\endcsname}}%
\else%no plain text option...expand macro once to pass contents for sorting
\edef\rslt{\noexpand\DTLnewdbentry{list}{sortlabel}{\expandonce#2}}%
\fi
\rslt%execute the \DTLnewdbentry command
\fi
\else
\DTLnewdbentry{list}{sortlabel}{#1}% Add entry sortlabel (optional argument)
\fi%
\DTLnewdbentry{list}{description}{#2}% Add entry description
}
\newenvironment{sortedlist}{%
\DTLifdbexists{list}{\DTLcleardb{list}}{\DTLnewdb{list}}% Create new/discard old list
}{%
\DTLsort{sortlabel}{list}% Sort list
\begin{itemize}%
\DTLforeach*{list}{\theDesc=description}{%
\item \theDesc}% Print each item
\end{itemize}%
}
\begin{document}
% I need to be able to edit these items and their formatting without changing the rest of my code
\newcommand{\firstitem}{ISDYNSTP: Is dynamic time step used ?}
\newcommand{\seconditem}{\textit{ISCDCA:}}
\newcommand{\thirditem}{\textbf{MVAR}}
\newcommand{\fourthitem}{IS2TL}
%append plain to the end of the associated macroname to define the plain text variant for it.
\newcommand{\seconditemplain}{ISCDCA:}
\newcommand{\thirditemplain}{MVAR}
Default:
\begin{itemize}
\item \firstitem
\item \seconditem
\item \thirditem
\item \fourthitem
\end{itemize}
Sorted:
\begin{sortedlist}
\sortitem{b}
\sortitem{\firstitem}
\sortitem{\seconditem}
\sortitem{seconditem}
\sortitem{\thirditem}
\sortitem{\fourthitem}
\sortitem{A}
\end{sortedlist}
\end{document}
Yields:

The initial test was included so that \sortitem{seconditem} would not be sorted according to the contents of \seconditemplain. I have tried to limit expansion of the arguments and referenced commands to their contents for the sortlabel to keep it from breaking. As such, if no plain variant is provided, then they will be sorted according to the \ at the start of the contents (as far as I can tell) and will appear at the beginning of the list. This also keeps it from breaking if the plain commands are not actually plain text. Note that it will break if you have spaces between the opening brace and the command (e.g., \sorteditem{ \seconditem}).
A nice addition would be to wrap the creation of both formatted and plain commands into a single call, for example:
\newcommand{\newsorteditem}[3][\relax]{%
\ifx#1\relax\else
\expandafter\newcommand\expandafter{\csname#3plain\endcsname}{#1}%
\fi
\expandafter\newcommand\expandafter{\csname#3\endcsname}{#2}}%
which would be called like \newsorteditem[plain text]{formatted text}{commandname}.
.csvfiles. It is not, as far as I can tell, intended for processing stuff with TeX macros in it. – cfr Dec 14 '15 at 01:34