The argument for forbidding "to be" seems a little like the argument for forbidding "is a" (inheritance) relationships in programming: that any "is a" can be expressed more precisely as a "has a" and/or "does _".
I think it's interesting to take the argument even further, to argue for structural types (like interfaces in Go and Typescript, and objects in OCaml) over nominal types (like Java interfaces and Haskell typeclasses). The former just says "if Bar is an interface with method Blaz(int, int, bool), and Foo has a method Blaz(int, int, bool), then Foo is a Bar", while the latter require the programmer to explicitly specify that Foo is a (implements) bar.
I have suspect that naive architecture of a program is heavily affected by native language of the programmer. My native language is easy to parse (14kb parser can parse 98% of technical language, while 200Kb parser can also fix errors), logical and composable, which may be the reason why there is so high rate of good developers from my country: not because we are smarter than average, but because we are taught from birth to think logically.
You are right, I am Ukrainian.
Ukrainian language is easy to parse: in most cases, just chop largest matching prefixes and suffixes from a word until word root will be left. Then suffixes can be used to understand sentence structure, while roots and prefixes can be used to understand meaning.
I found it interesting too when looking at it from the lens of Inform 7. The reasoning that E-Prime gives to avoid "to be" is largely the reasoning that Inform 7 works very well with its multiple uses of to be. Primarily in that the "god-like objective" sentences make sense when authoring establishing facts in a world state ("The house is blue.").
I think it's interesting to take the argument even further, to argue for structural types (like interfaces in Go and Typescript, and objects in OCaml) over nominal types (like Java interfaces and Haskell typeclasses). The former just says "if Bar is an interface with method Blaz(int, int, bool), and Foo has a method Blaz(int, int, bool), then Foo is a Bar", while the latter require the programmer to explicitly specify that Foo is a (implements) bar.