The philosophy of having separate Task Level and ISR based functions is based on the idea that it simplifies both versions and the ISR context SHOULD generally be simple and obvious enough that the programmer can easily make the distinction. I think any case where it isn’t clearly obvious which to use has likely gotten to the point that the ISR is doing too much.
Yes, on some processors, the implementation of the FromISR versions are suitable for task level calls, but not on others. One of the goals of FreeRTOS was to make the base code to be widely portable, and not tied to a specific processor or family of processors, and that does impose some restrictions that might not be needed for a given processor.