Rolling the RNG forward with a known seed is instantaneous; determining a seed from resulting values is not. Since a shiny xoroshiro result does not have the original PID, there is a much larger space of possible seeds to brute force and check if they can result in all the values of the entity.
A non shiny has 32bit EC, and a 32bit PID. A shiny only has the EC and 16bits of the original PID. So to check it, you have to try to guess (2^16) different original PIDs, which is 65535 times slower than an instant check. Such a computational requirement results in a not-instant result, which is infeasible for real-time legality checks.