Solved (kind of...) - it seems that enabling partial state saving (which is the default behavior) in web.xml did the trick and ViewExpiredException is thrown as expected.
<context-param>
<param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
<param-value>true</param-value>
</context-param>
Still I don't know why it worked.