For web, you need to support multiple browsers and infinite number of screen sizes.
For mobile, you need to support iOS and android and multiple different OS versions and screen sizes.
You also want to minimize platform-specific code, which often causes you to roll your own way of doing things. From an engineering point of view you don’t want your code based to diverge, which would cause supportability issues and/or lengthen and complicate developing new features.
It’s basically a nightmare for any moderately successful company that doesn’t want to alienate any customers.