Different between functions.php and plugin

A WordPress Plugin:

  • Executes only when individually activated via the Plugins panel.
  • Applies to all themes.
  • Requires specific unique Header text.
  • Is stored in wp-content/plugins, usually in a subdirectory.

A functions file:

  • Executes only when in the currently activated theme’s directory.
  • Applies only to that theme. If the Theme is changed, the functionality is unused.
  • Requires no unique Header text.
  • Is stored with each Theme in the Theme’s subdirectory in wp-content/themes.

 

From : https://codex.wordpress.org/Functions_File_Explained