Most complex software favor strong typing. I feel it’s not all due to ignorance, inertia, corporate politics or the marketing machine. Some brave and sharp technical minds ….
I think large teams need clean and well defined module-to-module interfaces. (module ~= class) A variable (mostly a pointer to a chunk of memory) should have well defined operations for it.
The precision comes with a cost — development time, inflexibility … but large teams usually need more coordination and control. At the heart of it is “identification”.
In the military, hospitals, government, and also large companies, identification is part of everyday life. It provides a foundation to security and coordination.
At the heart of OO modelling — translating real world security policies into system built-in rules. Strong typing = precise type identification.