Debería ser, en todo caso:
SELECT ...
CASE
WHEN ISDATE(ColumnName) = 1 THEN CONVERT(datetime, ColumnName, 103)
ELSE NULL
END
....
pero no está usando ISDATE CON CONVERT, ya que no hay una expresión como
ISDATE(CONVERT(varchar,ColumnName,112))
sin la conversión anidada, el valor de retorno depende de cosas como la configuración del idioma, por lo tanto, es un comportamiento no determinista. Sin conocimiento "externo", no es posible predecir el resultado que se obtiene, basándose únicamente en la entrada.