One single reason: refactoring.
When the types of objects being passed to and returned by functions are known, you can modify the type of an object and know at compile time that you forgot to update a usage of this type.
If objects have no known type, you may have some code that accesses properties that do not exist anymore.