It's probably not faulty, just not dealing with the precise situation you have here. If you are using mod_rewrite to make the directory name from a variable, and both the capitalized and non-capitalized word calls the same page on your server, then you've created a situation where your URLs have become case-insensitive (because you're not using "real" file or directory names) even though your server is running Linux.
However, Google is caching plain HTML files, so it can't see the difference between a mod_rewrite URL and a static one (which is the whole idea of using mod_rewrite in the first place).
You may need to adjust your rules to account for this situation - but the complexity depends on what kind of URL rewriting you are doing. Also, as I said, my "theory" is pure guesswork, so it might not be that at all.