The DNG images also appear to be a bit noisier, although that may actually be some other problem.
DNG has no noise reduction, unless you applied it yourself on your PC.
Can the DNG be improperly saved in CHDK?
Highly unlikely this could happen in a way that results in basically correct image with less details. The values in the DNG are basically straight from the frame buffer.
Can the image in the camera degrade between saving the JPG and then saving the DNG?
The DNG is saved *before* the jpeg, using basically the same raw data the camera users to create the jpeg. This is proven by the fact that we can modify the raw buffer at that point and see the results in the jpeg. The "raw develop" feature works using this, see
http://chdk.wikia.com/wiki/CHDK_User_Manual#RAW_developUsing "raw develop" and checking how the resulting jpeg compares to the original might be interesting. In the 1.2 trunk, "raw develop" should work with DNG directly. In 1.1, you may need to convert to a CHDK raw and then run raw develop on that.
Does the camera have access to something that allows its JPG images to be better than the DNG images?
Generally speaking, no. The "i-contrast" feature does appear to get some data before the raw hook and apply it later in jpeg processing. See
http://chdk.setepontos.com/index.php?topic=9601.msg98926#msg98926 but this probably comes from the raw buffer originally as well.
Or, are the programs I'm using to display and convert the DNG files (display from imagemagick, and ufraw) at fault here?
Quite likely. These programs may also give you a choice of debayering algorithms, which may produce better or worse results depending on the camera or scene. I saw a good post about this recently, but I'm having trouble finding it now.
Could it be that the camera does a better job interpolating the RGB values from the CFA than my software does?
Also quite likely. The Canon jpeg processing is very good, and obviously well tuned to the characteristics of their sensors. In camera processing will generally do noise reduction and sharpening to try to get some apparent detail back.