I think it's much better because the teacher doesn't have to match guesses to students. For example, for each student the odds are 30/100, roughly one in three. And any duplicates can be matched by a single guess.
That formula is missing something because for over 100 students the teacher can't lose. (they get over 100 guesses and there are only 100 numbers possible)
More precisely, if there are N students, the probability is (min(N,100)/100)^N. This is 1 for N ≥ 100. And the probability at N=30 is indeed a tiny 2e-16, which shows that the children's "random" picks were far from uniformly random.
(Incidentally, even with N=99 the probability is 0.37 ≈ 1/e, and the probability is lowest at N=37 ≈ 100/e. This is not a coincidence.)
The teacher picks 30 numbers out of 100. Then each student (independently) picks one number. If random, that is 0.3 ^ 30. Obviously, the students are not picking random.
E.g. teacher picking 1-30 and then each student has 0.3 odds of picking 1-30 or 31-100.
The issue is I think all it would take to beat the teacher is one unusual student.