Its a name space collision. To improve consistancy and performance you can only declare a function name once. The reason for this is that if multiple functions with the same name exist, there would need to be some way of handling it which could be unintentional (code bugs as it might not support that behaviour) or hard to compute (slow map load time as extra compile processes need to be run). Blizzard went for simply maiking it illegal to perform (will not compile).
What they could have done instead but sadly did not...
Overload, like java it could identify functions by both name and the parameters they use.
Combine, fuse both functions with the same name into a single function or call both functions with the same name consequitivly (would need overload support or illegal to use different function signatures).
Overwrite, from that point on the function name will refer to different code so that the orignal decleration is no longer accessible.
Overall I like it though as it makes sure you really are calling what you want to call. Overloading or other methods of permitting it could cause bugs where the incorrect code is called. Ofcourse Vjass scope constructs do help make code more manageable.