I'm assuming the real question is why:
A C# or Java function can never behave differently based on whether you invoked it as foo(4) or foo(2+2) or foo((int)16/4) because that information is gone by the time the function runs. It can tell what you passed, but it can't tell how you passed it.
For the same reason, a command can never behave differently based on whether or how you escaped its arguments. Quoting and escaping is a how, while the resulting string argument is the what.
Here is the equivalent execlp call of each of your attempts (echo is builtin in bash but behaves the same):
# v-- How you passed it v-- What you passed
echo -e # execlp("echo", "echo", "-e", 0); # prints nothing
echo '-e' # execlp("echo", "echo", "-e", 0); # prints nothing
echo "-e" # execlp("echo", "echo", "-e", 0); # prints nothing
echo \-e # execlp("echo", "echo", "-e", 0); # prints nothing
echo \\-e # execlp("echo", "echo", "\\-e", 0); # prints \-e
echo '\-e' # execlp("echo", "echo", "\\-e", 0); # prints \-e
echo "'-e'" # execlp("echo", "echo", "'-e'", 0); # prints '-e' (with quotes)
echo -- -e # execlp("echo", "echo", "--", "-e", 0); # prints -- -e
As you can see, the how doesn't affect output at all. It all comes down to the what. This is why all the escaping in the world will fail to have the intended effect.