First my personal bias: I favor micro-kernels and and a some abstractions. Like in Minix-3.
The monolithic OS must take care of security issues like kernel-space and user-space.
It can be somewhat less systematically coded.
In general you get less software quality. Linux is a good example where the quality finally is quite mature, but with needless framework library alternatives. Windows has a history of obsolete frameworks, but - as far one can judge - is at least on the GUI front refreshing.
The layered OS keeps things tight, defines algebraically complete APIs. The number of layers is not overdone normally. However passing data between layers is not done by simple function call passing all the data, but more by message passing. The sharing of memory is more orchestrated. But such a separation between layers makes sense: you do not want a simple compiled user application to play with the file system on a monolithic system too.
In general layers only deliver overhead when doing much work on the transport between the layers, like message passing or keeping mirror data on both sides of the layer.
A monolithic OS has its weak spots too, also in speed and efficiency. Sharing a directory on a SMB drive and some other network drive may not be done on a systematic recombinable API, where authentication and such is a general module.
A monolithic OS has less orchestration for instance for a boot.
A layered micro-kernel based Minix-3 can detect hanged applications/services and even recover from them, before the user notices.
But you are right, message passing makes things slower. But the overhead should not need to be that dramatic. Write you write byte-by-byte to a file over layers, one may expect a large cost. However there was (still is?) a Java OS, that to some extent dealt with that. Maybe a future language à la Rust may solve that problem. To clarify what I mean: in OOP language Smalltalk everything was a message, and Smalltalk was a persistent world. If the low-level machine implementation were good, that could speed up things. No one is complaining on virtual methods too.
One other point: the development of a monolithic OS takes longer and is more painful IMHO. One may hack API together fast, but then one needs unravel things when implementing some feature everywhere like security or caching.