Consider a case -
A customer shared a wsdl with you, and you created the consumer for the same and your code was moved through all phases and reached Production.
Later at some point, your customer changed the url of his wsdl(no other changes except the url). In this scenario, you have to change your code base, and again have to go through all the phases(Dev - Prod).
Ideally this should not be the case, the change is done at the customer end and should have less impact at your end. (changes out of your scope must be loosely coupled as far as possbile).
Now, if you have choosen to create an endpoint for this consumer and created the consumer ws. This endpoint url will be picked up in the run time(even though whatever url is there in the wsdl before creation). So, your Admin just needs to change the enpoint from Admin page. No need of Developer to tweek codebase.
You can check –
Create consumer with a wsdl whose url is http://xyz.com. And also create an endpoint with http://abc.com and configure the same endpoint the above consumer service. Now, geneate the wsdl for this consumer, you should be seeing http://abc.com in the new wsdl.
Almost same scenario holds good for Provider also.
Bottom line - endpoint alias helps in easy maintanance.