I've just sorted out one method of accomplishing this, but it involves a lot of I/O.
1) CON the DEM at a nominal value (e.g. VALUE > -1)
2) Raster to Polygon conversion (no simplification)
3) Clip the line by the new polygon
When I get the end points of the line using Feature to Vertices (both ends), they visually appear right on the boundary of the DEM, but when I run Extract Values to Points the values represent valid numbers, not no data, so it appears that they do fall within the DEM boundary.
I would still like a method that involved less I/O if anyone can enlighten me. I am worried that the values might not fall within the DEM boundary in all possible cases.
EDIT: In order to ensure that the end points fall within the DEM boundary Shrink (Spatial Analyst) can be applied to the conditional raster to remove a single pixel width from the entire raster before converting it to polygon format.