Note that $span(S)$ is the unique subspace satisfying the following property: for all subspaces $Q$, $S \subseteq Q$ iff $span(S) \subseteq(Q)$.
The base case is actually $k = 0$, not $k = 2$. For the base case, we see that the empty sum, which is the zero space, is equal to the span of the empty union, that is, the span of the empty set. This is because it is always true that $\emptyset \leq Q$, and whenever $Q$ is a subspace, it is always true that $0 \subseteq Q$. So $0 = span(\emptyset)$.
Now for the inductive step. We see that $(x_1 + ... + x_n) + x_{n + 1} = span(x_1 \cup ... \cup x_n) + x_{n + 1}$. You have shown that for all subspaces $a$ and $b$, $a + b = span(a \cup b)$. So we see that $span(x_1 \cup ... \cup x_n) + x_{n + 1} = span(span(x_1 \cup ... \cup x_n) \cup x_{n + 1})$.
Finally, we see that for any subspace $Q$, we have $span(span(x_1 \cup ... \cup x_n) \cup x_{n + 1}) \subseteq Q$ iff $span(x_1 \cup ... \cup x_n) \cup x_{n + 1} \subseteq Q$ iff ($span(x_1 \cup ... \cup x_n) \subseteq Q$ and $x_{n + 1} \subseteq Q$) iff ($x_1 \cup ... \cup x_n \subseteq Q$ and $x_{n + 1} \subseteq Q$) iff $x_1 \cup ... \cup x_n \cup x_{n + 1} \subseteq Q$ iff $span(x_1 \cup ... \cup x_n \cup x_{n + 1}) \subseteq Q$.
Therefore, $span(span(x_1 \cup ... \cup x_n) \cup x_{n + 1}) = span(x_1 \cup ... \cup x_n \cup x_{n + 1})$.
In fact, this is a special case of left adjoints preserving colimits. We can show that $+$ is the join operator for subspaces. Since $span$ is a left adjoint, it preserves joins. So this means that in general, $span(S_1) + ... + span(S_n) = span(S_1 \cup ... \cup S_n)$. In the case where $U_i$ is a subspace, we see that $U_i = span(U_i)$ and thus $U_1 + ... + U_n = span(U_1) + ... + span(U_n) = span(U_1 \cup ... \cup U_n)$. There is thus little need for induction here.
Elaborating on why the last bit is true without category theory: we see that for all subspaces $x_1, ..., x_n$ and $Q$, we have $x_1 + ... + x_n \subseteq Q$ iff for all $i$, $x_i \subseteq Q$. So therefore, we have $span(s_1) \cup ... \cup span(s_n) \subseteq Q$ iff (for all $i$, $span(s_i) \subseteq Q$) iff (for all $i$, $s_i \subseteq Q$) iff ($s_1 \cup ... \cup s_n \subseteq Q$) iff ($span(s_1 \cup ... \cup s_n) \subseteq Q$).
\dots(or\ldots) instead of...; this gives better spacing. – metamorphy Jul 12 '21 at 17:42