Although you seem pretty happy with the way it is working in IIS, it might be worth noting that SiteMinder may return the headers in the "ALL_HTTP" variable rather than as separate header variables. To ensure these values are also shown in your debug page, you might like to update the debug code to something like:
<% For Each strVarName in Request.ServerVariables %>
If Len(Request.ServerVariables(strVarName)) = 0 Then
Response.Write " </TD>"
<% Next %>
AllAttrs = Request.ServerVariables("ALL_HTTP")
RealAttrName = AttrName
Location = InStr(AllAttrs, RealAttrName & ":")
If Location <= 0 Then
GetAttribute = ""
Result = Mid(AllAttrs, Location + Len(RealAttrName) + 1)
Location = InStr(Result, Chr(10))
If Location <= 0 Then Location = Len(Result) + 1
GetAttribute = Left(Result, Location - 1)
Regarding the missing headers when using JSP, it might be worth checking that your SiteMinder ISAPI filter is higher in the list than the Tomcat/WebLogic filter. Apart from that, there may be a setting in Tomcat/Weblogic that is removing the header variables or preventing them from being passed through.