Some things you know in advance are obviously going to be computationally intensive, such as games; for those, you need all the performance you can get, so committing to data oriented design from the beginning has a lot of benefits. For everything else, you just have to decide if you think the tradeoff would be worth it. There is no easy answer here.
Why not? There is no reason you couldn't implement data oriented design for a small part of your application, especially a tight loop that's become a bottleneck, without changing the architecture of the entire app.
It's an architecture that is specifically designed to maximize performance. I think few people would argue that it is more readable or simpler than most other common architectures.