Split string with adding separator to substring
Review

You use very clean and strong names for all your variables so it's very easy to understand your code.
You too often go without {}. Especially the double for loops become very confusing.
You don't use good exception messages. In Arg_SeparatorEnumIllegalVal the Arg prefix is not necessary because the type of the exctpion is already telling me it's about an argument. You also formatted it like it was a variable with PascalCase but it's a message so it should be formatted like a normal sentence.

Alternative solution
There is a much shorter way to get the same results. You could use two different regexes:
var str = &quot;-1-2+3+4-5-6&quot;;

Regex.Matches(str, &quot;([-+]?[0-9]?)&quot;).Cast&lt;Match&gt;().Select(m =&gt; m.Value).Dump();
Regex.Matches(str, &quot;([0-9]?[-+]?)&quot;).Cast&lt;Match&gt;().Select(m =&gt; m.Value).Dump();

which will respectively give you:
-1 
-2 
+3 
+4 
-5 
-6 
&quot;&quot;

and
- 
1- 
2+ 
3+ 
4- 
5- 
6 
&quot;&quot; 

Whether you want to keep the empty string or not is up to you.