Filtered HTML adding two  tags, not one
The only way I've found of resolving this is to replace the two &lt;br /&gt; tags with one using a str_replace in the field preprocess function. I've placed an example below.

function theme_preprocess_field(&amp;$vars) {
  switch($vars['element']['#field_name']) {
    // When pressing Shift + Enter in WYSIWYG editor to create a new line it outputs two &lt;br /&gt; tags, not one.
    case "field_description":
      $vars["items"][0]["#markup"] = str_replace("&lt;br /&gt;&lt;br /&gt;", "&lt;br /&gt;", $vars["items"][0]["#markup"]);

      break;
  }
}