As R.M already indicated both methods are completely different.
EdgeDetect uses gradient based methods, which detect areas in which gradients change sharply. This works nicely on grayscale and color images, as gradients are easy to define there. The basic parameter here is the scale of the gradients that are taken into account.
MorphologicalPerimeter on the other hand, uses a strictly binary approach as explained by R.M. So, how can it work on grayscale and color images then? Well, simple, it uses
Binarize or something equivalent internally. You can see that the parameters of
MorphologicalPerimeter behave identically:
The basic parameter of
MorphologicalPerimeter is the threshold, which is principally different from the gradient scale of
MorphologicalPerimeter are not identical, even in your "figure 8" example where they seem similar can be easily determined using:
ImageData[MorphologicalPerimeter[Graphics[Style[Text["8"], 400]]]] ==
In the zebra example
MorphologicalPerimeter can output more than a black image if you tweak the scale parameter: