Может стать немного многословным, чтобы передать состояние везде. Кроме того, эта монада хорошо известна большинству программистов на Haskell, поэтому они будут знать, что вы делаете. Если вы катите свой собственный, вне монады, может быть сложно понять, что делает ваш код.
Я нахожу монаду состояния аккуратной для инкапсуляции изменений состояния, совершенно очевидно, какая часть вашего кода является состоящей из состояний (т.е. изменяется или зависит от состояния) w.r.t остальное чистое вещество.