This creates systems where everything within them is known to be pure, accurate, safe.
This can make reasoning within them much simpler, and allow elegant formalisms and simplifications.
The problem is that the transition from the real world to being represented in the system becomes much more onerous.
The real world is messy and impure.
To model the real world in the pure formal system requires quite a bit of work from the user to "import" it.
This work can be like a wall in front of you before you even get started.
So the tradeoff is you never run into impure states within the system, but you also might use it for far fewer real world things because it's such a pain to model real things in it.
Ideally you have a rough and ready, flexible 'inbox' where you can roughly model things and then iteratively clean them up to become more pure over time.