O primeiro método depende da variável, então a resposta é não para o primeiro.
Mas você pode facilmente usar a segunda abordagem sem uma variável, só precisa modificá-la um pouco:
SELECT
SUBSTRING(
(SELECT ';' + strContract FROM tblContractMail FOR XML PATH('')),
2,
2147483647
)
Como você pode ver, o separador vai antes o item. Como resultado, você começa a cortar a string do segundo caractere, omitindo o ponto-e-vírgula inicial. O especificador de comprimento não precisa ser precisamente o comprimento menos um, você pode especificar qualquer número razoavelmente grande e a função retornará tudo, desde o segundo caractere até o final. Neste caso, o máximo de
int
valor foi especificado.