As was mentioned in other answers, your default RBAC role assignments don't apply because you need permissions on the AAD level, not on the level of subscriptions or resources. You need to assign the serviceprincipal a role on the level of the Active Directory.
As far as I can see, the required permission to create service principals would be "Cloud Application Administrator". You might be able to get away with "Application Developer" in some situations, but from the way your question is phrased I believe this is the correct one. You can check the built in roles in the documentation if you have a clearer understanding for what actions you want to execute.
To create a service principal with such permissions using the Azure CLI:
$sp=az ad sp create-for-rbac --name ServicePrincipalToCreateOtherPrincipals
$spDetails=az ad sp show --id $sp.id
$spObjectId=$spDetails.id
#RoleDefinitionId of Cloud Application Administrator
$Body="{'principalId':'$spObjectId', 'roleDefinitionId': '62e90394-69f5-4237-9190-012177145e10', 'directoryScopeId': '/'}"
# Assign role to service principal
az rest --method POST --uri https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments --headers "Content-Type=application/json" --body $Body
# Sign in as created SP, allow-no-subscriptions because I did not assign any other permissions
az login --service-principal -u $sp.id -p $sp.password --allow-no-subscriptions
# Will now work
az ad sp create-for-rbac --name createdbySP
These commands are fully tested and working, except for the parts like $spDetails.id
where I manually used copy paste instead.