Fordi en af dem er en transact sql-kommando (try catch), og den anden er en DDL-sætning.
Det er nok bedre at spørge efter, om kolonnen eksisterer, før du laver alter-sætningen.
For at gøre dette med MSSQL, se Hvordan kontrollerer man, om der findes en kolonne i en SQL Server-tabel?
Specifikt til dit tilfælde,
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
alter table nyork
add [Qtr] varchar(20)
END