Thanks for pointing this out - I think it may be the implementation changed but the documentation didn’t. 0 is indeed an invalid interval value (as it would cause the time to execute continuously), but the check against 0 is performed by an assert().
Web docs have been updated - so you will see the change after the next deployment. I suspect this inconsistency was introduced at the time the xTimerCreateStatic() function was implemented, at which time the common code between xTimerCreate() and xTimerCreateStatic() was moved to a separate function.