Yo supongo que es una manera de hacer que las aplicaciones que no utilizan en absoluto realizar un poco mejor. Aquí está mi pensamiento sobre esto.
Los sistemas operativos x86 (e imagino que otros) necesitan almacenar el estado de la FPU en el cambio de contexto. Sin embargo, la mayoría de los sistemas operativos solo se molestan en guardar / restaurar este estado después de que la aplicación intente usar la FPU por primera vez.
Además de esto, probablemente haya algún código básico en la biblioteca matemática que establecerá la FPU en un estado base sano cuando se cargue la biblioteca.
Entonces, si no vincula ningún código matemático, nada de esto sucederá, por lo tanto, el sistema operativo no tiene que guardar / restaurar ningún estado de FPU, lo que hace que los cambios de contexto sean un poco más eficientes.
Solo una suposición sin embargo.
EDITAR: en respuesta a algunos de los comentarios, la misma premisa básica todavía se aplica a los casos que no son de FPU (la premisa es que fue para hacer que las aplicaciones que no hicieron que el uso de libm funcione un poco mejor).
Por ejemplo, si hay una FPU suave que era probable en los primeros días de C. Entonces tener libm por separado podría evitar que muchos códigos grandes (y lentos si se usaran) se vinculen innecesariamente.
Además, si solo hay enlaces estáticos disponibles, se aplica un argumento similar que mantendría los tamaños ejecutables y los tiempos de compilación reducidos.