It suffices that every neighborhood of every point in $S$ have a nonzero Lebesgue measure, that is,
$$g_r(x):=|S\cap B_r(x)|>0\tag{1}
$$
for all $x\in S$ and all real $r>0$, where $B_r(x):=\{y\in\mathbb R^d\colon\|y-x\|<r\}$, $\|\cdot\|$ is the Euclidean norm, and $|\cdot|$ is the Lebesgue measure.
Indeed, it easy to see that for each $r>0$ the function $g_r$ is continuous on the compact set $S$ and hence
$$h_r:=\min_{x\in S}g_r(x)=\min_{x\in S}|S\cap B_r(x)|>0,
$$
and this is the crucial point.
Suppose now that $\|f\|_\infty\ge c$ for some real $c>0$. Then $|f(x_f)|\ge c$ for some $x_f\in S$ and hence $|f|\ge c/2$ on $S\cap B_{r_c}(x_f)$, where $r_c=\frac c{2L}>0$ and $L$ is the Lipschitz constant (one and the same for all the functions $f$ you want to deal with). So,
$$\|f\|_2\ge\frac c2\,\sqrt{|S\cap B_{r_c}(x_f)|}\ge\frac c2\,\sqrt{h_{r_c}}>0. \tag{2}
$$
Thus, if $\|f\|_2\to0$, then $\|f\|_\infty\to0$.
Indeed, if (say) for a sequence $(f_n)$ we have $\|f_n\|_\infty\not\to0$, then, passing to a subsequence, without loss of generality we may assume that $\|f_n\|_\infty\ge c$ for some $c>0$ and all $n$. But then, by (2),
$\|f_n\|_2\ge b>0$ for all $n$, where $b:=\frac c2\,\sqrt{h_{r_c}}>0$ -- so that $\|f_n\|_2\not\to0$.
It is also easy to see that condition (1) is, not only sufficient, but also necessary. Indeed, suppose that (1) fails to hold for some $x\in S$ and some real $r>0$. For all $y\in S$, let $f(y)$ be defined as the shortest distance from $y$ to $\mathbb R^d\setminus B_r(x)$. Then $f$ is $1$-Lipschitz and $\|f\|_2=0$, whereas $\|f\|_\infty=r>0$.