Why do smoke detectors run off 9v batteries?
The sensor (typically an ionization chamber with some radioactive Americium 241) is normally specified at 9V. I think it would work at a lower voltage, but with less sensitivity. 

More information can be found here. 

Since the battery drain is very low, it's not necessarily true that cells with higher ampere-hour capacity would last significantly longer- much of the battery drain is self-discharge, and if the voltage is stepped up for the detector, then the efficiency of that must be taken into account. 

Edit: Also, the piezo horn will provide more sound volume at a higher voltage. It's still possible to use lower voltages but it would require something like an inductor or a transformer to get an acceptable volume level for smoke alarm purposes. 

Early (1970s) single-station ionization smoke detectors used expensive batteries adding up to 12V (with standard 4000-series CMOS used internally). See, for example, patent US4004288. Modern products use CMOS ASICs. 

Photoelectric smoke detectors which operate on the basis of scattering of light are also used (because they detect certain types of fires better, and because of concerns about the radioactive sources ending up in landfills). There is no reason to use higher than a few volts for the photoelectric sensor and source, however the piezo beeper issue remains. 9V batteries are also used in this type of smoke detector.