Ignoring unpublished/published as criteria for "Has new content" I have rudimentary Recycle Bin system based on Flags and unpublishing / republishing content. However, when republished, "Has new content" displays Updated.

I still want New and Updated for when there are new comments so I'm not sure of the best way to go about it.

Thanks.
You need custom code to achieve this. There's 2 things to know here:

Updated Status Logic

The logic for driving the New &amp; Updated labels is based on the history table (which stores the last time a user viewed a node) &amp; the node.changed column:

$changed = $this-&gt;get_value($values, 'changed');

$last_comment = module_exists('comment') &amp;&amp; !empty($this-&gt;options['comments']) ? $this-&gt;get_value($values, 'last_comment') : 0;

if (!$last_read &amp;&amp; $changed &gt; NODE_NEW_LIMIT) {
  $mark = MARK_NEW;
}
elseif ($changed &gt; $last_read &amp;&amp; $changed &gt; NODE_NEW_LIMIT) {
  $mark = MARK_UPDATED;
}
elseif ($last_comment &gt; $last_read &amp;&amp; $last_comment &gt; NODE_NEW_LIMIT) {
  $mark = MARK_UPDATED;
}
return $this-&gt;render_link(theme('mark', array('type' =&gt; $mark)), $values);


Essentially, it's comparing when a user last viewed a node vs. when a node was last changed. 

What isn't known, is what was changed (e.g. the publish status) so to implement some sort of exclusionary logic you're going to have to track the history of publishing/unpublishing to check if the last update was just a change in publish status (node.status).

Updated Status Display

Assuming you have that logic in place, it's possible to override the output a views field. Here you can extend the views_handler_field_history_user_timestamp class with your own custom class implementing a render() method that adds the logic to check whether the last change was only a publish status change. In the final step, you can use hook_views_data_alter to override the handler for the Has new content field.