Component boundaries should make change easier. A layout split is useful only when it also reflects a real responsibility.
I tend to extract components around repeated behavior, shared constraints, or meaningful product concepts. That keeps the tree readable without scattering tiny files everywhere.
The result is a codebase where components carry intent, not just markup.