That is indeed the correct command. I suspect that you are making some mistake when you run the command, like logging on to the wrong server, or running the command in the wrong database.
Here is a repro which demonstrates that the command works. In this example I'm creating a user without login for simplicity, and to contain everything in one script, I impersonate the user.
CREATE USER testie WITHOUT LOGIN WITH DEFAULT_SCHEMA = testie
GRANT CREATE TABLE TO testie
GRANT ALTER ON SCHEMA::dbo TO testie
go
CREATE SCHEMA testie AUTHORIZATION testie
go
EXECUTE AS USER = 'testie'
go
CREATE TABLE tbl1(a int NOT NULL)
go
REVERT
go
ALTER USER testie WITH DEFAULT_SCHEMA = dbo
go
EXECUTE AS USER = 'testie'
go
CREATE TABLE tbl2(a int NOT NULL)
go
REVERT
go
SELECT * FROM INFORMATION_SCHEMA.TABLES
go
DROP TABLE dbo.tbl2
DROP TABLE testie.tbl1
go
DROP SCHEMA testie
DROP USER testie