Round-tripping column datatype causes size of table to grow
When changing the data type of a column, SQL Server will choose to either:


Change the metadata only;
Change the metadata and read all the existing values to ensure they fit; or
Change every row physically


Even if every row must be changed, SQL Server still take steps (where possible) to prioritize speed over final size, on the basis that we want DDL changes to complete as quickly as possible. Optimizing the storage space can wait for a maintenance window.

Changing float to smallint can be accommodated within the existing space allocated for the row, but it does leave some unused space. As has been mentioned, this can be reclaimed by fully rebuilding the changed structure.