The Tk::Text POD documents this behavior:
in reply to Possible bug in Tk::Text
Specifies one of two states for the text: normal or disabl
the text is disabled then characters may not be inserted or
and no insertion cursor will be displayed, even if the inpu
is in the widget.
While this may seem inconsistent when compared with the behavior of other widget classes, I've always assumed there was a good reason for it. If you want a Text widget that can't be modified, but that doesn't require toggling -state, you can always use Tk::ROText, which replaces the bindings that are normally used to modify the text with noops.