It's working!!! This has been one of those issues that drags you down, thinking it's not possible. Now I'm so excited that it's working, when it's something that should've worked from the begining.
Anyway, so it turns out that the "ColdFusion" way of decoding Base64 wasn't working right so I used a Java class instead. It is a "unsupported" Sun class that might go away so that might be an issue, but it looks like there are alternatives too. Then I changed how the Inflation works to avoid that buffer limit. In case anyone is interested, here is the code that works for me to decode a GoogleApps SAML Request. Thanks again, some of these links here helped in the right direction!
<cfscript>
// Decode the query string from Base 64
Decoder = CreateObject("Java", "sun.misc.BASE64Decoder").init();
SamlByte = Decoder.decodeBuffer(URL.SAMLRequest);
// Create Byte Array used for the inflation, the CF way
ByteClass = CreateObject("Java", "java.lang.Byte").TYPE;
ByteArray = CreateObject("Java", "java.lang.reflect.Array").NewInstance(ByteClass, 1024);
// Create Byte Streams needed for inflation
ByteIn = CreateObject("Java", "java.io.ByteArrayInputStream").init(SamlByte);
ByteOut = CreateObject("Java", "java.io.ByteArrayOutputStream").init();
// Create Objects needed for inflation
Inflater = CreateObject("Java", "java.util.zip.Inflater").init(true);
InflaterStream = CreateObject("Java", "java.util.zip.InflaterInputStream").init(ByteIn, Inflater);
// Complete the inflation
Count = InflaterStream.read(ByteArray);
while (Count != -1) {
ByteOut.write(ByteArray, 0, Count);
Count = InflaterStream.read(ByteArray);
}
// Finished with inflation
Inflater.end();
InflaterStream.close();
// Convert SAML request back to a string
SamlString = CreateObject("Java", "java.lang.String").init(ByteOut.toByteArray());
</cfscript>