Changing colors, layout spacing, section ordering, adding app blocks, and moderate Liquid/CSS changes within the existing theme architecture — this is customization. It's fast, cheap, and keeps you on the theme's update path.
New data models the theme wasn't designed around, substantially different information architecture, or functionality that fights the theme's existing structure rather than extending it — that's a custom build, even if it started as a "small customization request."
If a request requires fighting the theme's existing structure instead of extending it — overriding core templates repeatedly, duplicating sections to work around a limitation — that's the signal you're doing a custom build with extra steps, and it's usually cheaper to just plan it as one from the start.