Multiple-dispatch allows you to avoid complex switch-case blocks. Imagine a function taking 3 different arguments and you got to switch-case on the type of all these arguments. It will be a huge mess.
But more importantly, the swith-case method is close for extension. If you buy a third party library with such a functin with switch case, how do you extend it with another type? You cannot do that without editing the original function found inside a third party library.
Secondly Julia multiple-dispatch is ultra-fast, which switch case is not. Julia JIT will analyze dispatch in the call stack and inline whenever it can determine that the same method is called every time. You cannot achieve that with switch-case. The result is much slower execution.
Julia for good reason has turned into a superior language for software engineering. For perhaps the first time we are getting real reuse that OOP promised us but never really delivered. Multipe-dispatch is very flexible in terms of third-party extension.