It might be nice to have a block option to prohibit only edits to non-talk pages.
While not much use for blocks of registered users, I can see this being a useful possibility in situations where it is currently necessary to issue many short blocks or a long-term block of a shared IP address, owing to vandalism.
The idea behind this is that while blocked users are able to read articles -- and shared IP addresses in educational instititutions will likely do a lot of reading of articles -- they have no (easy) way to bring errors to the project's attention.
Permitting talk page editing would allow well-intentioned anonymous users stuck behind a blocked shared IP address subject to leave comments and suggestions for improvement on article talk pages, rather than being unable to do anything about any errors they may find while reading articles. At the same time, users only intending to vandalize an article about their school/favourite band/whatever would be unable to do so, and experience suggests that users are far less inclined to vandalize discussion pages, their usual motive being to change what Wikipedia says about a subject and hope other people see it.
T18447: Software should allow blocks that only expire when a user has read a specified page (training module, user talk page, etc.)
T18644: Allow users to be blocked from editing non-talk pages only
T27400: Software should allow admins to give specific users permission to edit specific pages through blocks (whitelist)