I believe that David Eppstein's construction is basically the whole story.
So for $0 <\epsilon \leq 1/2 $, call a graph 'bad' if it fails to have a subgraph with min degree $> (1/2 +\epsilon)d$.
Now Eppstein's construction restated:
" Build a graph on $1,...,n$ by visiting each vertex $i= 1,2.. $ and, at each stage, join $i$ to $(1/2 + \epsilon(i))d $ additional vertices among $\{ i+1, \ldots ,n \} $"
Where $|\epsilon(i)| \leq \epsilon$ and $\sum \epsilon(i) = 0$. One thinks of this $\epsilon(i)$ as the 'noise' allowed by the $\epsilon$-room that we have.
The average vertex has $d/2$ neighbors ahead of it and was hit
by $d/2$ edges from previous vertices so the average degree is $d$. Of course, there are some issues at the boundary but this does not affect the average if we take n large.
Now we show that every 'bad' graph is constructed in this way. Obverse that bad graphs are the ones that are reduced to the empty graph by the process:
"If there is a vertex of degree $\leq (1/2 + \epsilon)d$ remove it. Otherwise, STOP".
Thus for a bad graph,we get an ordering of the vertices $v_1,v_2,...,v_n$ (taking in the order removed by the process) so that
$v_i$ has at most $(1/2 + \epsilon)d$ edges forward to $v_{i+1}, \ldots v_n$. If the number of forward edges of $v_i$ is $(1/2 + \epsilon(i))d$ then $\sum \epsilon(i)=0$ holds by the fact the average degree is $d$.