Una de las trampas de la orientación a objetos en lenguajes como C# son los operadores de copia e igualdad.
En C# al usar el operador = o ==, la igualdad entre objetos referenciados solo se da si en realidad es el mismo objeto y de manera similar al hacer una copia nos podemos llevar una sorpresa si no tenemos cuidado de estar copiando la referencia o el contenido. Por eso la interfaz ICloneable es controversial porque su significado es ambiguo
Referencias:
Implementar ICloneable mediante serialización
Should we Obsolete ICloneable (The SLAR on System.ICloneable)
IClonable deep vs shallow, best practise