Question: How do you cite a background map layer that is used in ArcMap that is retrieved from ArcGIS Online? For example the background layer is suppose to be credited from the U.S. Geological Survey and in the description it was digitized from the U.S. Geological Survey Professional Paper 1183.

Answer: 
According to the help topic ["Defining parameter data types in a Python toolbox"](http://resources.arcgis.com/en/help/main/10.1/index.html#/Defining_parameter_data_types_in_a_Python_toolbox/001500000035000000/), you should use `"DEFeatureClass"`.
**What is the difference between DEFeatureClass and IFeatureClass?**

First a short explanation of **Interface** vs. **Implementation**: DEFeatureClass is a CoClass ID, meaning it is an implementation of IDEFeatureClass. In COM, interfaces are separated from implementations. To get a DEFeatureClass, you must first declare an instance of IDEFeatureClass and use that to get DEFeatureClass.

Now, onto what the DEFeatureClass is: The DEFeatureClass is the [**data element**](http://edndoc.esri.com/arcobjects/9.2/ComponentHelp/esriGeoDatabase/IDEFeatureClass.htm) for your feature class. A data element is the metadata for the feature class. It contains only read/write properties that describe the feature class with no methods. It's purpose is to store and retrieve information *about* the feature class. Notice that you can change various properties *describing* your feature class from here as all of the properties are read/write.

An [**IFeatureClass**](http://edndoc.esri.com/arcobjects/9.0/componenthelp/esrigeodatabase/IFeatureClass.htm) is used to control the behavior of the feature class. It *does things* with the feature class versus simply *storing information* about the feature class. Notice in the documentation that this object includes various methods that you can execute on the feature class, such as DeleteIndex, DeleteField, FeatureCount, etc. However, it also contains information about the feature class, albeit in read-only (get) format. Notice in the link that properties describing the feature class, such as FeatureType, are all read-only. 

**Which should you use, and why?**

See comments below. You must use DEFeatureClass. The link you provided in .pdf describes the different data types that correspond to the feature class. The only one that is relevant to you is the DEFeatureClass.