What that actually means is that if you change a command so that it runs a totally different program the script would break, which is equally true in a stringly-typed world.
Though in the stringly-typed world, it's when the format changes from:
A B C
to:
A B D C
Or some other such thing. Your string processing code (perl, sed, sort, uniq, etc.) expects certain things that have now changed because <reasons> (which may be totally reasonable or unreasonable).
That isn't a reason to go back to only passing strings between processes, that's like saying "I can't assign this string to an integer so all strongly typed languages are stupid."
"The output of curl.exe (and every other exe or other command external to PowerShell) is System.String.
"So changing curl to run curl.exe instead ofInvoke-WebRequest` would break this script because the output type would change."