Porque um deles é um comando transact sql (o try catch) e o outro é uma instrução DDL.
Você provavelmente faria melhor consultando para ver se a coluna existe antes de fazer a instrução alter.
Para fazer isso com MSSQL, consulte Como verificar se existe uma coluna em uma tabela do SQL Server?
Especificamente para o seu caso,
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
alter table nyork
add [Qtr] varchar(20)
END