Well, in fact, the 'canonical' form for any URL must necessarily be
protocol specific. This is true for the default port (e.g., that
http://host:80/ is the same as http://host/ but gopher: has 70 as a
default port, etc.) that the same host might have multiple DNS names,
or that some FTP servers allow case insensitive file names, any number
of actual equivalences, symbolic links, etc.
In the grand scheme of things, if you treat "/" and "%2F" as
different, then at most you'll treat a few things as 'different' that
are really the 'same', but in fact, this will be an insignificant
amount compared to the other kinds of duplications.
It *IS* important for each protocol-specific type to specify whether
"/" and "%2F" are the same or different. For FTP and HTTP, they are
different; for Gopher, they are the same.