Difference Between Custom Workflow and Plugin:
When we are using Plugin we have a number of triggers availble (called as Steps/Message) to trigger the plugin execution,
Where Custom workflows are triggered by standard workflows available in CRM, that make the custom workflow triggers limited(Create, Update, Status Change, Delete and On assign).
Workflows and by extension, custom workflow activities, execute totally asynchronously. Plugins can execute both asynchronously and synchronously.
Plugin overall execution time is lesser then workflows and if validations are required to be performed then plugins should be preffered.
Workflows can be manually executed, or automatically triggered by selected events. Workflows can be limited to automatically execute within specific organizational scopes (ie. Org, BU, Parent and Child BUs, or for the Owner only). Plugins are always triggered by the messages to which they’re subscribed, though some Messages allow limiting execution based on whether certain attributes have been passed into the Message.
Workflows can be turned off (by unpublishing). Plugins are always on. Custom workflow activities can be used in many Workflows. Workflows can be developed through the Workflow design interface. Plugins must be developed in Visual Studio. Workflows do not require compiling (though custom workflow activities do). Plugins and custom workflow activities must be compiled and deployed through processes external to CRM.
When speed of execution, security of process, and validity of data are integral, I choose Plugins. When flexibility, functionality reuse, and optional user involvement are integral, I choose Workflows.