Justificativa da resposta B: "Neste caso, como há mais de uma instrução a ser executada, é necessário utilizar o bloco BEGIN...END para delimitar o escopo das instruções que serão executadas caso a condição seja verdadeira. Sem o bloco BEGIN...END, o comando IF executará apenas a primeira instrução após a condição, desconsiderando a segunda instrução."
Acho necessário esclarecer que, nesse caso, o segundo comando será executado sempre, mas por não ser um comando do bloco IF. O SQL vai entender que o bloco IF contém apenas a primeira instrução ("PRINT @Y;") e que a segunda instrução ("PRINT @X;") está no escopo de fora e será executada independente do resultado do IF.