When you are able to grant permission, Am sure definitely the users part of developer would have db_owner privileges.
I think there is limitation for the objects created under dbo schema when we grant execute privilege with 'with grant option' at database level not at object level.
I tried to create objects under user defined schema and able to grant execute privilege on proc in user defined schema to other user.
here are my test queries.
-- log on with login X which has default schema as userdefined_schema
create proc wgo_p1
as
begin
select @@servername
end
grant execute on [userdefined_schema].[wgo_p1] to newuser
-- sunccessful
to confirm this I have created one more schema userdefined_schema_wgo with authorization to login/user Y
create proc userdefined_schema_wgo.wgo_p1
as
begin
select @@servername
end
grant execute on [userdefined_schema_wgo].[wgo_p1] to newuser
-- fails when you execute with login X
and login X can't grant permission to newuser on proc userdefined_schema_wgo.wgo_p1
then authorization on schema userdefined_schema_wgo has been changed to X.
now login X can grant permission to newuser on proc userdefined_schema_wgo.wgo_p1
pre setup: I have granted all the privileges same as you as below:
CREATE ROLE [Developer] AUTHORIZATION [db_owner]
GO
-- Grant database level permissions to the role
GRANT ALTER ANY SCHEMA TO [Developer]
GO
GRANT CREATE FUNCTION TO [Developer]
GO
GRANT CREATE PROCEDURE TO [Developer]
GO
GRANT CREATE table TO [Developer]
go
GRANT SHOWPLAN TO [Developer]
GO
GRANT VIEW DEFINITION TO [Developer]
GO
GRANT EXECUTE TO [Developer] WITH GRANT OPTION
and login X is part of role Developer.
And thank you very much for the scenario, it helped me to explore most of the schema and with grant option stuff.