Los tipos de suma serían generalmente menos útiles en los lenguajes OO convencionales, ya que están resolviendo un tipo de problema similar al subtipo OO. Una forma de verlos es que ambos manejan opensubtipos, pero OO es, es decir, uno puede agregar subtipos arbitrarios a un tipo primario y los tipos de suma son, closedes decir, uno determina por adelantado qué subtipos son válidos.
Ahora, muchos lenguajes OO combinan el subtipo con otros conceptos, como estructuras heredadas, polimorfismo, mecanografía de referencia, etc. para que sean generalmente más útiles. Una consecuencia es que tienden a ser más trabajos de configuración (con clases y constructores y demás), por lo que tienden a no usarse para cosas como Resultsy Options y así sucesivamente hasta que la tipificación genérica se hizo común.
También diría que el enfoque en las relaciones del mundo real que la mayoría de la gente aprendió cuando comenzaron la programación OO, por ejemplo, Dog isa Animal, significaba que Integer is a Result o Error isa Result parece un poco extraño. Aunque las ideas son bastante similares.
En cuanto a por qué los lenguajes funcionales podrían preferir la escritura cerrada a la abierta, una posible razón es que tienden a preferir la coincidencia de patrones. Esto es útil para el polimorfismo de la función, pero también funciona muy bien con tipos cerrados ya que el compilador puede verificar estáticamente que la coincidencia cubre todos los subtipos. Esto puede hacer que el lenguaje se sienta más consistente, aunque no creo que haya ningún beneficio inherente (podría estar equivocado).