te transcribo lo que dice msdn
El + (Operador, Visual Basic) tiene la finalidad principal de sumar dos números. Sin
embargo, también puede concatenar operandos numéricos con operandos de cadena. El operador + tiene un conjunto complejo de reglas que determinan si se debe sumar, concatenar, señalar un error del compilador o producir una excepción InvalidCastException en tiempo de ejecución.
El & (Operador, Visual Basic) sólo se define para operandos de tipo String y siempre amplía sus operandos a String, independientemente de la configuración de Option Strict. El operador & está recomendado para la concatenación de cadenas, porque está definido exclusivamente para cadenas y reduce las posibilidades de generar una conversión no deseada.
El + (Operador, Visual Basic) tiene la finalidad principal de sumar dos números. Sin
embargo, también puede concatenar operandos numéricos con operandos de cadena. El operador + tiene un conjunto complejo de reglas que determinan si se debe sumar, concatenar, señalar un error del compilador o producir una excepción InvalidCastException en tiempo de ejecución.
El & (Operador, Visual Basic) sólo se define para operandos de tipo String y siempre amplía sus operandos a String, independientemente de la configuración de Option Strict. El operador & está recomendado para la concatenación de cadenas, porque está definido exclusivamente para cadenas y reduce las posibilidades de generar una conversión no deseada.