Como anécdota, al menos, este "desajuste de impedancia" parece ser peculiar a las situaciones en las que se desea llevar las relaciones a un idioma de objeto.
En C, la mayoría de las API de bases de datos tienden a exponer conjuntos de resultados como matrices multidimensionales, en lugar de como estructuras. En consecuencia, uno simplemente está accediendo a los datos en el mismo formato que existe en la (s) tabla (s) de la base de datos; no tiene importancia que ahora exista como una copia local de los datos, en lugar de "en la base de datos".
La mayoría de las bibliotecas RDBMS funcionales exponen las filas de la base de datos como tipos de registro, que corresponden a un nivel bastante profundo a las filas de la base de datos casi a la perfección. No hay "desajuste de impedancia" en esta situación.
El Wikipedia article sobre el tema parece especular sobre algunas de las razones por las que el paradigma del objeto es particularmente susceptible a esta falta de coincidencia.
Mi creencia es que esencialmente se basa en el hecho de que siempre está construyendo una representación secundaria de los datos (es decir, superponiendo "objetos"). En la mayoría de los lenguajes funcionales imperativos o (no objeto), es menos probable que se cree una representación secundaria tan grande, semánticamente irrelevante de sus datos. Si uno va a construir una representación secundaria en ese mundo, es más probable que sea una abstracción de algún tipo. Esto corresponde a una creencia básica (no comprobada) de que el paradigma OOP es básicamente el martillo proverbial que hace que cada problema parezca un clavo.