Well, I got to the bottom of part of the problem, I think. Unfortunately it is not "trivial" to tell what modules are configured for use with an Apache instance on Dreamhost.
If you are running mod_php (which is not supported by default on Dreamhost anymore), phpinfo() will return a list of loaded modules, but php-cgi (which is what most users are now running on DH) will not.
This is further complicated by the fact that Dreamhost is currently running multiple versions of Apache; some users are running Apache 1.3, while others are running 2.0. It also appears that the two versions are not identical as to which modules are loaded.
As a result, I don't think it is possible to make a general statement as to "what Apache modules are installed" that will be accurate for every user.
Having been here a while, and having "older" domains that are setup running Apache 1.3, as well as newer ones running Apache 2.0, I was able to get a phpinfo() report from both server versions running under mod_php version 4.4.2 and 4.4.4 (even that differs between my Apache's!)
In the interests of making that information available for others, and to help explain your situation, here is what I found:
As you can see, mod_expires is available under the Apache 1.3 configuration, but is not available under an Apache 2.0 configuration.
It appears you are probably running an instance of Apache 2.0.
You might want to consider whether you want to ask DH to move you to an instance of Apache 1.3 so you can use the mod_expires module, or see if you can get them to enable mod_expires in their configuration of Apache 2.0. I think they should be receptive to enabling mod_expires, as the caching it provides should would make it easier for responsible / considerate users like yourself to cache stuff and decrease the load on the server.
While I know this is not a "fix" for your problem, I hope it helps to understand what is happening (it's not you ), and help you decide how to approach the issue.