c:foreach doesn't work as intended when using an object with an overriden equals. The same problem is observed when using an non serializable object. In both cases the problem seems to be that the foreach component caches and uses an outdated reference to the object.
When using a serializable object with a non overwriten equals method, all works as intended.
When forcing org.apache.myfaces.STRICT_JSF_2_FACELETS_COMPATIBILITY as true on the web.xml file, all works as intended.
When using ui:repeat, all works as intended.
I created a test case that demonstrates the problem.