[proofplan]
The argument is a double containment, both directions of which follow from the definition of "ideal generated by a set". One inclusion is the order-reversing property of $V$ applied to $S \subset I_S$. The reverse inclusion uses that every element of $I_S$ is a finite sum $f = \sum_j g_j s_j$ with $s_j \in S$, $g_j \in k[X_0, \ldots, X_n]$ — so a point at which every $s_j$ vanishes also kills every such $f$. The proof is structurally identical for the affine and projective cases; we present the projective case since the statement involves a homogeneous ideal.
[/proofplan]
[step:Record the order-reversing property of $V$]
We use the following property of the projective vanishing locus operator throughout. If $A \subset B \subset k[X_0, \ldots, X_n]$ are sets of homogeneous polynomials, then by definition
\begin{align*}
V(B) = \{[p] \in \mathbb{P}^n_k : f(p) = 0 \text{ for all } f \in B\} \subset \{[p] \in \mathbb{P}^n_k : f(p) = 0 \text{ for all } f \in A\} = V(A),
\end{align*}
since requiring vanishing on the larger set $B$ is a stronger condition than vanishing on $A$. Hence $V$ reverses inclusions: $A \subset B \implies V(B) \subset V(A)$.
[/step]
[step:Deduce $V(I_S) \subset V(S)$ from $S \subset I_S$]
By definition the ideal generated by $S$ is the smallest ideal of $k[X_0, \ldots, X_n]$ containing $S$, so in particular $S \subset I_S$. Applying the order-reversing property of $V$ from Step 1 yields
\begin{align*}
V(I_S) \subset V(S).
\end{align*}
[/step]
[step:Prove $V(S) \subset V(I_S)$ by expanding elements of $I_S$ as finite combinations of elements of $S$]
Let $[p] \in V(S)$, so $s(p) = 0$ for every $s \in S$. We must show that $[p] \in V(I_S)$, i.e. $f(p) = 0$ for every $f \in I_S$.
By the definition of the ideal generated by a set, every $f \in I_S$ admits a representation
\begin{align*}
f = \sum_{j=1}^N g_j\, s_j
\end{align*}
for some finite $N \ge 0$, with $s_j \in S$ and $g_j \in k[X_0, \ldots, X_n]$. Polynomial evaluation at $p$ is a ring homomorphism $\mathrm{ev}_p : k[X_0, \ldots, X_n] \to k$, hence respects sums and products. Applying it,
\begin{align*}
f(p) = \sum_{j=1}^N g_j(p)\, s_j(p) = \sum_{j=1}^N g_j(p)\cdot 0 = 0,
\end{align*}
where we used $s_j(p) = 0$ from $[p] \in V(S)$. Hence $[p] \in V(I_S)$, establishing $V(S) \subset V(I_S)$.
[guided]
We need to show that every point at which every element of $S$ vanishes also kills every element of the larger set $I_S$. The slogan: passing from a generating set to the ideal it generates does not enlarge the locus of common zeros, because the ideal is built from the generators by exactly the operations (sum and multiplication by ring elements) that preserve the property "vanishes at $p$".
\textbf{Unpacking $I_S$.} The ideal generated by $S$ is, by definition, the smallest ideal of $k[X_0, \ldots, X_n]$ containing $S$. Equivalently, it is the set of all finite $k[X_0, \ldots, X_n]$-linear combinations of elements of $S$:
\begin{align*}
I_S = \left\{ \sum_{j=1}^N g_j\, s_j : N \ge 0,\ s_j \in S,\ g_j \in k[X_0, \ldots, X_n] \right\}.
\end{align*}
This concrete description is what makes the proof go through.
\textbf{Why concrete generators suffice.} Take $[p] \in V(S)$. By hypothesis, $s(p) = 0$ for every $s \in S$. We want to show $f(p) = 0$ for every $f \in I_S$. Pick any $f \in I_S$ and use the description above: write
\begin{align*}
f = \sum_{j=1}^N g_j\, s_j.
\end{align*}
\textbf{Evaluation is a ring homomorphism.} For any point $p$, the map
\begin{align*}
\mathrm{ev}_p : k[X_0, \ldots, X_n] &\to k \\
h &\mapsto h(p)
\end{align*}
is a ring homomorphism: it sends sums to sums and products to products. Therefore evaluating $f$ at $p$:
\begin{align*}
f(p) = \mathrm{ev}_p\left(\sum_{j=1}^N g_j s_j\right) = \sum_{j=1}^N \mathrm{ev}_p(g_j)\cdot \mathrm{ev}_p(s_j) = \sum_{j=1}^N g_j(p)\cdot s_j(p).
\end{align*}
\textbf{Closing the argument.} Each $s_j \in S$, so $s_j(p) = 0$ by hypothesis. Each summand $g_j(p)\cdot s_j(p) = g_j(p) \cdot 0 = 0$, regardless of what $g_j(p)$ is. Hence $f(p) = 0$. As $f \in I_S$ was arbitrary, $[p] \in V(I_S)$.
\textbf{Why ideals (rather than just subsets) are the right invariant for $V$.} What this argument shows is that $V$ "factors through" the ideal-generation operation: only the ideal generated by $S$ matters for $V(S)$. This is the algebraic counterpart of the geometric fact that a closed subvariety is determined by its homogeneous ideal of definition, not by any particular finite generating set.
[/guided]
[/step]
[step:Combine the two inclusions]
From Step 2, $V(I_S) \subset V(S)$; from Step 3, $V(S) \subset V(I_S)$. Therefore
\begin{align*}
V(S) = V(I_S),
\end{align*}
as required.
[/step]