That isn't true, you need parentheses for procs with no arguments, else it's interpreted as a proc pointer. Try `echo` vs `echo()`.
> I can't think of any good reason why anyone would deliberately have two different functions with the same name in different cases anyway
It's used for declaring variables of an object. `type Foo = object` and `var foo: Foo`.
I like Nim's rules for identifiers, it prevents you for mistakenly declaring two different variables/procedures with similar names.
Other examples where, how you would write something doesn't matter, is Windows filesystems and gmail, reserving every possible derivative with a dot like your.name@gmail.com and y.ourname@gmail.com.
So it's not uncommon or weird. Just programming languages are overly restrictive.