Según .Net no es lo mismo 1 que “1″

De acuerdo, un Integer no es un String, de la misma manera que no es lo mismo un gato que un perro. Pero un Integer con valor 1 y un String con valor «1» deberían considerarse iguales, sino ¿Qué sentido tiene que .equals admita como parámetro un Object?

Si por tratarse de clases diferentes vas a devolver False, entonces acepta solo parámetros de tu misma clase.

En resumen, String debería mostrar más interés por compatibilizarse con otras clases.