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.