In the default Ivy version matcher, numbers after “-RC” are compared as real numbers, not as strings or not as “must start with”. Therefore in your example, 0 is lower than 202009160912, so the version is valid and will be picked.
To be more precise, when doing the resolution, Ivy splits the version 1.0.0-RC0 to the tokens 1, 0, 0, RC, 0, and it splits the version 1.0.0-RC202009160912 to the tokens 1, 0, 0, RC, 202009160912. Then tokens which are valid numbers are compared as numbers, others are compared as strings.