First off GETDATE() is inherently datetime as far as data type.
Try
select cast(getdate() as smalldatetime)
and you will get the same results of not having seconds in the output.
The reason is smalldatetime is only accurate down to the minute whereas datetime is accurate down to one three-hundredths of a second.
See "datetime and smalldatetime" in SQL BOL for a more in depth overview.