It really depends on the site and the demands of the client.
For mid to large projects, generally around the 75% complete mark developers start to kick themselves for NOT building the theme from scratch. Why? There are a few factors.
- That shiny new theme that you bought can almost do everything the client wants it to do. The problem is Almost. When trying to tweak it (or the child theme, I should say) often times with themes you get into playing this game of whack-a-mole. You solve one problem but then another 2 pop up.
- Plugin Compatibility: There’s that “Oh shit” moment when you realize that an essential plugin for the site somehow isn’t compatible with the theme. The WordPress white screen of death appears and you need to delete the plugin just to get things back to normal.
- Customization: Many poorly written themes look amazing but as soon as you try to change one or two things, it all goes to shit. Now you need to spend hours pouring over the theme code to unshitify the theme.
- The Client can change their mind or want added features the theme doesn’t provide. A simple request of adding an additional feature can sometimes break the theme.
- Many paid themes out there are a complete mixture of other people’s code. Some of this code is outdated, poorly written and no longer supported. When you update to the latest version of WordPress there can be a conflict and your site crashes.
This being said, when you find a great paid theme developer, and you trust their code hold on to them. A good theme can save loads of time.
Generally, your best bet is to build and customize a child theme based on a theme you can trust. Whether that is a vanilla framework theme, a trustworthy paid theme or a theme you’ve built yourself.