ネストされた foreach 内で、同じ変数にアクセスすると、異なる値が返されます。これは、最初の読み込み時ではなく、ページの再読み込み時に発生します。
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
(...)
xmlns:c="http://java.sun.com/jstl/core"
xmlns:h="http://java.sun.com/jsf/html">
(...)
<c:forEach items="#{controller.availableTransitions}" var="transition">
<c:forEach items="#{transition.availableTransitions}" var="transitionItem">
<h:outputText value="1_#{transitionItem.name} 2_#{transitionItem.name}" />
3_#{transitionItem.name} 4_#{transitionItem.name}
</c:forEach>
</c:forEach>
</ui:composition>
ページのリロード後、transitionItem.Name は 3 と 4 に対して正しい値を返し、1 と 2 に対して異なる値を返します。JSF と JSTL の統合の問題でしょうか?