**Have fun.**

This works for any post type *(including customs)* that supports the 'post_tag' taxonomy. 99.9% of the time, it will apply only to 'post' post type. *But we make compatible stuff ;)*

    // Prepare to save new post_tag
    add_action('wp_insert_post', function($post_ID, $post){
    	// Don't update if field value was not posted
    	if(!isset($_POST['single_postag'])) return;
    	// Fix WP slashing madness (I hate this joke)
    	$postag = stripslashes(trim($_POST['single_postag']));
    	$postag = $postag ? array(trim($postag)) : array();
    	// Set object terms, don't append
    	wp_set_object_terms($post_ID, $postag, 'post_tag', false);
    }, 10, 2); // 2 args required

    // And now hijack the metaxbox
    add_action('add_meta_boxes', function($post_type, $post){
    	// Discard default 'post_tag' metabox (Important)
    	remove_meta_box('tagsdiv-post_tag', $post_type, 'side');
    	// Only add the new metabox if post_type supports 'post_tag' taxonomy
    	if(!is_object_in_taxonomy($post_type, 'post_tag')) return;
    	// Create a new 'tagsdiv-postag' metabox (you can't reuse the old MB name)
    	add_meta_box('tagsdiv-postag', __('Tag'), function($post, $box){
    		// Get the tags and only keep names to weld
    		$tags = wp_get_post_tags($post->ID);
    		// Loop through as references for quick value reassignment
    		foreach($tags as &$tag) $tag = $tag->name;
    		// If multiple tags are added outside this widget, they are combined on save.
    		echo '<p><input type="text" class="widefat" name="single_postag" value="',
    			esc_attr(implode(', ', $tags)), '" /></p>';
    		// Pimp description so your users can understand this
    		echo '<p class="description">', 'Enter a single Tag.', '</p>';
    	}, $post_type, 'side', 'core');
    }, 10, 2); // 2 args required

**Tested code.** *PHP 5.3+ Closures used. Convert code yourself to PHP 5.2 compatible variant if you need.*

Regards.