Porque uno de ellos es un comando transact sql (el try catch) y el otro es una instrucción DDL.
Probablemente sería mejor consultar para ver si la columna existe antes de hacer la instrucción alter.
Para hacer esto con MSSQL, consulte ¿Cómo comprobar si existe una columna en una tabla de SQL Server?
Específicamente para su caso,
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
alter table nyork
add [Qtr] varchar(20)
END