I am trying to understand the rationale behind this from a technical design perspective. why would creating namespace be limited in an org that's been marked as devhub? wouldn't the other way easier for developers to have the namespace and devhub in one org?
It would be convenient, except that you can link one Namespace to multiple Dev Hub orgs, and you can link multiple Namespaces to a single Dev Hub org. A developer would be able to link the Dev Hub's Namespace to the Dev Hub's Namespace Registry. I'm pretty sure this would make the Namespace unusable in that org, because packages have to be registered to a Namespace, by name, if they're going to be a First Generation Package (1GP) or a Second Generation Package (2GP). Because the API uses the Namespace's name, and not its Id, this could cause problems when creating packages, especially when you start building dependencies. Overall, this restriction is to prevent weird packaging scenarios.