the product space $\mathbb{R}^I$,where I denote $[0,1]$, has a countable dense subset.
The dense set can be written down explicitly: let $\mathcal{B}$ be a countable base for $[0,1]$ (note that we exploit the fact that we can view the (uncountable) index set as a (Hausdorff) topological space with a countable base!), e.g. all open intervals with rational endpoints. Then define
$$D = \{f: [0,1] \to \mathbb{R}: \exists n \in \mathbb{N}: \exists B_1,\ldots,B_n \in \mathcal{B}: B_i \mbox{ pairwise disjoint } \land \exists q_1,\ldots, q_n \in \mathbb{Q}: \forall i \in \{1,\ldots,n\}\, f|_{B_i} \equiv q_i \land \forall x \in [0,1] \setminus \cup_{i=1}^n B_i: f(x) = 0 \} \mbox{,}$$
which in words is just all functions from $[0,1]$ to $\mathbb{R}$ that are constant with rational values on finitely many pairwise disjoint base members, and $0$ elsewhere.
First note that this set is indeed countable: there are only countably many finite families of pairwise disjoint members from $\mathcal{B}$, and for each we must choose some $n$-tuple of rational values (of which there are also only countably many). This is a standard set-theory counting argument.
This set is also dense: for this it suffices to show that any (non-empty) basic open set $O$ of $\mathbb{R}^{[0,1]}$ intersects $D$. So take such a basic open set, which is just a set that depends on finitely many coordinates: there are finitely many points $x_1,\ldots,x_n$ and finitely many non-empty open sets $U_1,\ldots,U_n \subset \mathbb{R}$ such that
$$ O = \{ f: [0,1] \to \mathbb{R}: \forall i \in \{1,\ldots,n\}: f(x_i) \in U_i \}\mbox{.}$$
Now we find pairwise disjoint $B_i \in \mathcal{B}$ such that $x_i \in B_i$ for all $i$, by Hausdorffness and the fact that $\mathcal{B}$ is a base. We also can find rational numbers $q_i \in U_i$, as the rationals are dense in $\mathbb{R}$. Then the obvious function $f$ on $[0,1]$, that sends all of $B_i$ to $q_i$, and the rest to $0$ is by construction in $D$ and also in $O$. So this concludes the proof.
With this idea it is quite easy to show that the product of $\mathfrak{c} = 2^{\mathbb{N}}$ many separable spaces has a separable product: we use essentially the same proof to see that $\mathbb{N}^{[0,1]}$ is separable. Then if $X_i$ ($i \in [0,1]$, using $[0,1]$ as an indexing set for convenience) is separable, pick a countable dense subset $D_i$ and note that $D = \prod_{i \in [0,1]} D_i$ is dense in $\prod_{i \in [0,1]} X_i$ and the continuous image of $\mathbb{N}^{[0,1]}$ (use any bijection $f_i$ from $\mathbb{N}$ to $D_i$ (always continuous!) and take their product), and so separable as the continuous image of a separable space. But a dense subspace in a dense subspace is dense in the large space, so $\prod_{i \in [0,1]} X_i$ is also separable.
Generalizing even further: if we have at most $2^\kappa$ many spaces, all of which have a dense subset of size at most $\kappa$, then their product also has a dense subset with size at most $\kappa$, for an infinite cardinal $\kappa$. Again, the proof exploits the fact that we can see the index set (we can take $\{0,1\}^\kappa$ for convenience) as a Hausdorff space of weight $\kappa$ to let us choose a dense subset of functions as we did above. This fact is known as the Hewitt-Marczewksi-Pondiczery theorem.
Hint: It is a general fact that for any separable space $X$, the product $X^{[0,1]}$ is separable. Try to show this first for $2^{[0,1]}$.
I think you could say more generally that if $X$ has a dense subset of cardinality at most $\kappa$ and $Y$ is (equinumerous with) a Hausdorff space with a basis of cardinality at most $\kappa$, then $X^Y$ with the product topology has a dense subset of cardinality at most $\kappa$.