There is no difference. This is a complete shortcode plugin:
/* Plugin Name: blogname */
add_shortcode( 'blogname', 'get_bloginfo' );
Usually, you should never register shortcodes in a theme, because the content will be useless after a a theme switch. So, a plugin is the better option.