You create safe readers, like that example, because you want to guard your software from inappropriate input. The universe of inappropriate is very large, for example you attacker could feed a lot of random symbol names to you in the hope of exhausting memory.
So safe readers are paranoid. A good practice, if you need a safe reader, is to start with a reader with no capabilities and then start adding in the things you must have. But that's tedious. So another approach is to discard big swaths for functionality and then add them back only if and when you need them. That example is illustrating the second case. He lost keywords because he wanted to eliminate any access to packages. Keywords were just collateral damage.
That example is nice because it's so concise and comprehensible.