that user says that he is a seasoned user.
But he is revealing that is not, when he craves to be schema owner for dbo - because that is effectively the same as owning the entire database.
Anyway, it seems that you can just sit on our hands. Look at the script below, which runs without errors. (The EXECUTE AS statement cause you to impersonate the seasoned user to you can test is permissions.)
CREATE TABLE test (a int NOT NULL)
CREATE USER seasoned WITHOUT LOGIN
ALTER ROLE db_ddladmin ADD MEMBER seasoned
go
EXECUTE AS USER = 'seasoned'
go
ALTER TABLE test ADD id int NOT NULL
go
ALTER TABLE test ADD CONSTRAINT pk PRIMARY KEY (id)
go
REVERT
go
DROP TABLE test
DROP USER seasoned