Basically, the separation of Delegate and MulticastDelegate occurs for historical reasons. Initially, there were delegates who could not be united, and those who could ... but this turned out to be not a useful difference. Apparently, this was only discovered when it was too late to break MulticastDelegate from the / CLR framework.
From CLR via C #, 3rd Edition:
The System.MulticastDelegate class is derived from System.Delegate, which itself is the result of System.Object. The reason two classes of delegates are historical and unsuccessful; in FCL, there must be only one delegate class. Unfortunately, you need to know both of these classes, because although all the delegate types you create have MulticastDelegate as the base class, you will sometimes manipulate your delegate types using methods defined by the Delegate class instead of the MulticastDelegate class. [...]
source share