The next question is whether this is from lack of common constructs/conventions by those new to F# or if it would always pervade as seems to be the case with Lisps. e.g. Clojure was specifically made to cover more in its library and syntax to promote standard styles.
Rather than thinking F# didn't/doesn't work, what were the reasons and what could be changed so it did work well?
Maybe some workflow changes like more design discussions before putting up a PR for review, or pair programming with rotating pairs so that conventions emerge. Also over time the codebase itself if it has benefited from convergence would show repeating patterns of adopted conventions.
I see the language itself as unapproachable only by reputation/lineage. In practice it can be on about the level of Elixir which is gaining traction and success stories.
What does hero-code mean?
Allowing hero-coding in any language makes it harder to work as a team, so using language that leverages hero output only makes it worse. I wouldn't say that the power of the language is the thing that should be blamed.
I can certainly see that using constructs that the team as a whole isn't ready to adopt being a problem that also comes up in adoption of Scala.
As an anecdote, I see it come up with clojure a lot. Some of the clojure devs in my company can spin up a lot of interesting applications and fast. However, trying to read any of there code can be nearly impossible. Why? Usually because of a generous helping of their own metaprogramming constructs that they've built up over time. I've watched them program and it's both interesting and really hard to follow.
The big problem we've ran into is these clojure projects have been really hard for teams to get into. As a result, the worst thing has happened, many of them are being scrapped and rewritten in java because they are too hard to maintain otherwise.