Reduce not making full use of list of assumptions?

What I believe is the issue here is what a statement in your Reduce like c ∈ Reals actually means. You say it's a condition (and I feel you mean assumption), I say it's an expression, a Boolean expression. An expression like x>0 doesn't state that x is greater than 0. It's an undetermined claim about x that is True when x is indeed greater than 0, and False if it is not.

So, as long the truth cannot be determined, the output is the expression itself:

Reduce[x > 0, {x}]
(* x > 0 *)

and

Reduce[x > 0, {x}] /. x -> 5
(* True *)

Similarly,

Reduce[x ∈ Reals, x]
(* x ∈ Reals *)

and

Reduce[x ∈ Reals, x] /. x -> 5
(* True *)

In inequalities Reduce automatically assumes the variables to be Real. It reduces them to the minimum set of expressions that have the same Boolean value. Compare:

Reduce[a > 0, {a}]
(* a > 0 *)

Reduce[a + b > 0, {a, b}]
(* a ∈ Reals && b > -a *)

Reduce[a + b + c > 0, {a, b, c}]
(* (a | b) ∈ Reals && c > -a - b *)

In your case, most of the generated Boolean conditions that must hold for your expression to be true contain inequalities that already imply that the variables contained in them must be real. c is an exception:

Reduce[{
   -(a + b) > Sqrt[(a + b)^2 - 4 (a b - c d)], 
   (a | b | c | d) ∈ Reals, 
   a + b < 0, a b - c d > 0, 
   (a + b)^2 > 4 (a b - c d)}, 
   {a, b}
] // LogicalExpand // Reduce

Mathematica graphics

In the yellow expressions you see no inequality containing c, so its status as real must be made explicit.

Your expression could be better written using a domain specification at the end as:

Reduce[{
  -(a + b) > Sqrt[(a + b)^2 - 4 (a b - c d)], 
  a + b < 0, 
  a b - c d > 0, 
  (a + b)^2 > 4 (a b - c d)}, 
  {a, b}, Reals
]

Mathematica graphics


Try this:

FullSimplify[
 Reduce[Assuming[
   a + b < 0 && a b - c d > 0 && (a + b)^2 > 4 (a b - c d), -(a + b) >
     Sqrt[(a + b)^2 - 4 (a b - c d)]], {a, b}, Reals]]