Most developers will create add-ins if creating a command, tool, combo box, menu or context menu, multi-item, toolbar, tool palette, dockable window, or application extension. However, if multiple interfaces need to be inherited, or if registration is required, an add-in will not work and a custom component needs to be created. For more information, see Building add-ins for ArcGIS Desktop.
for example, you cannot write a custom renderer, a custom workspace, or a custom feature as an add-in. You will need to use the classic COM extensibility approach if your solution includes component types that are unsupported in the add-in framework.