Why do we really need to use safe versions of APIs inside interrupts?!

@RAc
Thanks for reply.
But my question was not about why to have two different APIs, my question was about why FreeRTOS use those configASSERT() lines and does not give the permission to use of for example xSemaphoreGive() inside an ISR while without that configASSERT() macro, it will works as correctly as xSemaphoreGiveFromISR().
What is the rational reason for that constraint?