The key element here is that $\mathbb{R}$ is $\sigma$-finite. The rest is nitty-gritty and a $\sum_{n=1}^\infty {1 \over 2^n} = 1$ trick.
Suppose for each set $E$ of finite measure and each $\epsilon >0$ you can find some open set $G$ containing $E$ with $\mu(G \setminus E) < \varepsilon$.
Now let $E$ be and $\varepsilon>0$ be arbitrary, and let $E_n = E \cap (n, n+1]$. Now let choose open $G_n$ such that
$$
E_n \subset G_n
\qquad \text{and}
\qquad \mu(G_n \setminus E_n) < \varepsilon {1 \over 3\cdot2^{|n|}}.
$$
Now let $G = \bigcup_n G_n$, which is open.
By monotonicity, we have
$$G \setminus E = \bigcup_n G_n \setminus E \subset \bigcup_n G_n \setminus E_n
\implies
\mu(G \setminus E) \le \sum_n \mu (G_n \setminus E_n ) < \varepsilon.
$$
Elaboration:
$G \setminus E = (\bigcup_n G_n) \setminus E = \bigcup_n (G_n \setminus E)$. Now, since $G_n \setminus E \subset G_n \setminus E_n$, we have
$\bigcup_n (G_n \setminus E) \subset \bigcup_n (G_n \setminus E_n)$.