I try to use it to divide up areas of responsibility within the database.
I'll have a util/utils/tools Schema which is pretty portable between databases and has a Numbers table, UDFs, SPs and things to help work on the database. The procedures don't reference anything outside the utils schema.
Then I'll have a scratch/work/temp schema where I can do SELECT INTO and create tables where I want a real table instead of a temp #table. There are basically just tables here, but possible also some views on the tables.
I have a completely separate database for imports and testing results to verify against, but if you didn't have that, I might have an import, export and test/testresults schema which contained those things that are ETL or known good results to regression test against.
Then everything else will only be in a few schemas - or maybe just one. In a large system, each subsystem might be a schema. Code in these can reference other schemas, but should be pretty carefully looked at any time it references anything outside the schema.