RFC 2396 defines how URI works. URL is just a special case of URI, so all rules apply. See section 2.2:
2.2. Reserved Characters
Many URI include components consisting of or delimited by, certain
special characters. These characters are called "reserved", since
their usage within the URI component is limited to their reserved
purpose. If the data for a URI component would conflict with the
reserved purpose, then the conflicting data must be escaped before
forming the URI.
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
"$" | ","
The "reserved" syntax class above refers to those characters that are
allowed within a URI, but which may not be allowed within a
particular component of the generic URI syntax; they are used as
delimiters of the components described in Section 3.
On the other hand, as you can read here:
RFC 1738 (as modified by 2396 and 3986) defines the scheme (http:), authority (//server.example.com), and path (/myfile/mypage.htm) component, and does not define any special meaning for the + character. The HTML spec defines the query component to be mime type application/x-www-form-urlencoded which is defined as "replace spaces with + and other special characters as in RFC1738".
This means that when you use +
, Drupal tries to prevent it from being interpreted as space, so it encodes it. And then it fails to recognize your alias properly.
Probably you should file a bugreport. Given that Drupal 8 is almost out of beta, I highly doubt it will be fixed, though. So consider simply avoiding special characters in your aliases.