This is a great question. len(string) is the only one that works in Python but the choice is fairly arbitrary. Many other languages - probably most actually use the second form.
There are also languages that support "uniform function call syntax" where both work and are equivalent (e.g. D).
IMO the biggest advantage of the string.len() form is that it works with autocomplete. That may also explain why Python doesn't use it, because it didn't have static typing (and therefore proper auto-complete) until very recently. Many people still don't use it.
Note that even in Python the free function form len(string) is kind of a lie - it gets translated to string.__len__() so really they've just done both but made one of them really ugly.
Why? God knows. Python is full of insane design decisions. This is one of the milder ones.
The first one is the approach of Functional Programming language (e.g. Python ) and the second one is the approach for Object orientated languages (e.g. Java, C#)
Python is a function Orientated Language. ( Python 3 is less but its still has that orientation )
Because python is a scripting language and their Object Orientated Features are not that expanded like a "normal" Object Orientated Language like C# or Java.