I could not find in the Zephyr doco a useful function that freeRTOS has portYIELD_FROM_ISR( xHigherPriorityTaskWoken ), but I am sure it is in there.
The system can go directly from servicing an interrupt then back to normal context with a desired task awoken - which is excellent for servicing heavy post-interrupt jobs pronto.... I've found when push comes to shove, approaching hard real time, freeRTOS is the goods. I use FreeRTOS on AVR, STM32, Microblaze, A53-MPSoC... etc
On those graphs, free-rtos only shows nothing happening because it is solid and it works. and also I guess Zephyr is fairly new, so naturally there are lots of contributions.
FreeRTOS is written lean and mean, it is fast. Zephyr seems like some half-way to linux option
And the heavier option may be just what people want/need, which is fine.
There is a big diff with zephyr in that it knows about MMUs / MPUs. it also appears much more tightly tied to the platform, where freertos tries to be generic.
I recently carefully considered Zephyr on a new project , but I went to linux with the real time patch on one, and another project going with FreeRTOS on 1 core, and full linux on the other core.
I guess there is a bunch of people that dont like ucLinux and have between 4MB and 16MB available.