In a nutshell: any design must satisfy some requirements. In satisfying any complex set of requirements there will have to be compromises made, satisfying requirement X to the n-th degree may make it impossible to satisfy requirement Y. So, whether you are talking about CPUs or washing-machines there will be variety of designs to meet variety of requirements.
The situation is made more complex, but not essentially changed, by the evolution of both technologies and of requirements over time.