After looking more closely at the IName interface I see that it has an Open method that can instantiate the workspace or dataset, even when no feature class is included in the IName. The IName help says:
"A Name object is a persistable software object that identifies and locates a geodatabase object such as a dataset or a workspace or a map object such as a layer.
A Name object supports an Open method that allows the client to get an instance of the actual object (for example, the dataset or workspace) given the name object. A name object thus acts as a moniker that supports binding to the named object.
The geodatabase supports methods on workspaces that hand out name objects that can be used by browsing clients to display the names of datasets in the workspace and to instantiate any specific dataset."
I suppose I would have to extract just the IFeatureDatasetName portion of the full tool output and cast that to IName prior to using the Open method, since otherwise the full output Name in the IGPValue would include a feature class that does not yet exist. So I guess I can go from IGPValue to IName to IFeatureDatasetName, back to IName, then use the IName Open method to create an instance of the IDataset and then get an IGeodataset (or possibly open the IGeodataset directly using IName) and finally get the Spatial Reference.