Following Deryk's suggestion, I've enabled tomcat's access logging, by uncommenting this from server.xml:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
The reason being that Firebug's Net tab seems to be lying about what it's getting from it's cache versus what it's going to the server for.
So, let's go through a few scenarios.
ace-showcase, PROJECT_STAGE=Production, deployed=Yesterday, Browser=Firefox 3.6.13
1. SHIFT-REFRESH of dateTimeEntry.jsf
Firebug: 200 * [Good]
Tomcat: 200 * [Good]
2. Click outputLink to GET dateTimeEntry.jsf
Firebug: 200 * [Bad]
Tomcat: No access except 200 dateTimeEntry.jsf [Good]
3. RERESH of dateTimeEntry.jsf
Firebug: 304 * [Good]
Tomcat: 304 * [Good]
4. Click on outputLink to GET sliderEntry.jsf
Firebug: 200 * [Bad]
Tomcat: No access except 200 sliderEntry.jsf [Good]
ace-showcase, PROJECT_STAGE=Development, deployed=Now, Browser=Firefox 3.6.13
1. SHIFT-REFRESH of dateTimeEntry.jsf
Firebug: 200 * [Good]
Tomcat: 200 * [Good]
2. Click outputLink to GET dateTimeEntry.jsf
Firebug: 304 * [Good]
Tomcat: 304 * [Good]
3. RERESH of dateTimeEntry.jsf
Firebug: 304 * [Good]
Tomcat: 304 * [Good]
4. Click on outputLink to GET sliderEntry.jsf
Firebug: 304 core mandatory, 200 yui_loaded * [Bad-ish]
Tomcat: 304 * [Good]
So, there doesn't seem to be any problem with the caching, as tested in ace-showcase. The only thing that would indicate a problem, is that Firebug lies about getting resources, which Tomcat shows it is not re-getting.
http://wiki.icefaces.org/display/ICE/JSF+Configuration