>SSMS is generic tool and as such it quite often unnecessarily works the way you describe instead of just using ALTER TABLE. It could be quite expensive on big tables.
In some cases the SQL itself doesn't allow some column changes - for instance, making a column not null when it was nullable and may contain nulls in some rows, if the column doesn't have a default. One solution is to create a default, apply it to all rows where there's a null in the field, then make the field not nullable.
There may be other cases when altering a column is simply forbidden by SQL engine, and then creating a temp table, inserting from old, dropping old and then renaming new to old is the only way. SSMS, Toad and maybe other generic tools out there will just generate a script to do that.