Plugin
Time out after 2 minutes.
Good for short logics which executes faster
Can trigger independently with messages in plugin registration tool configuration.
More Triggers available in plugin registration tool.
Can be configured either Sync/Async
Cannot be called on-demand only triggers on some events
Always triggered by the messages to which they’re registered, though some Messages allow limiting execution based on whether certain attributes have been passed into the Message.
Custom Workflow
No Timeout restrictions.
Good for long running codes.
Cannot trigger independently without a parent OOB workflow.
does not support more events except Create, Update, Status Change, Delete and On assign
Can run only when used as a sept in OOB workflow
Can be called on-demand to execute
Limited to automatically execute within specific organizational scopes (i.e. Org, BU, Parent and Child BUs, or for the Owner only).