To me, a more conceptually direct derivation goes as follows. The Levi-Civita symbol is a symbol, not a geometrical object. We can denote its value in a coordinate system $x$ as $\tilde \epsilon_{(x)\mu\nu\rho\sigma}$. On its face, this is silly - the value of $\tilde \epsilon$ does not depend on the coordinate system. However, the point here is that we can compare the (trivial) transformation behavior of $\tilde\epsilon$ with the transformation behavior we would expect from a $(0,4)$-tensor.
As stated, the actual transformation behavior of these components is trivial, i.e.
$$\tilde \epsilon_{(x)\mu\nu\rho\sigma}\mapsto \tilde \epsilon_{(y)\mu\nu\rho\sigma} = \tilde \epsilon_{(x)\mu\nu\rho\sigma}$$
If it were a tensor, then it would transform as
$$\tilde\epsilon_{(x)\mu\nu\rho\sigma}\mapsto \tilde \epsilon_{(y)\mu\nu\rho\sigma} = \tilde \epsilon_{(x)\alpha\beta\gamma\delta}J^\alpha_{\ \ \mu}J^\beta_{\ \ \nu}J^\gamma_{\ \ \rho}J^\delta_{\ \ \sigma}= J \tilde\epsilon_{(x)\mu\nu\rho\sigma}$$
where $J^\alpha_{\ \ \beta} \equiv \frac{\partial x^\alpha}{\partial y^\beta}$ is the Jacobian matrix and $J$ is the Jacobian determinant. Therefore, we say that the true transformation behavior is given by
$$\tilde\epsilon_{(x)\mu\nu\rho\sigma}\mapsto \tilde \epsilon_{(y)\mu\nu\rho\sigma} = J^{-1}\tilde \epsilon_{(x)\alpha\beta\gamma\delta}J^\alpha_{\ \ \mu}J^\beta_{\ \ \nu}J^\gamma_{\ \ \rho}J^\delta_{\ \ \sigma}$$
The fact that the power of $J$ out front is $-1$ means that $\tilde \epsilon$ is a tensor density of weight $-1$.
We now turn our attention to the symbol with upstairs indices. In this case, we note that the actual transformation behavior is now
$$\tilde \epsilon_{(x)}^{\mu\nu\sigma\rho}\mapsto \tilde \epsilon_{(y)}^{\mu\nu\sigma\rho} = \mathrm{sgn}(J)\epsilon_{(x)}^{\mu\nu\sigma\rho}$$
whereas its expected transformation behavior (if it were a tensor) would be
$$\tilde \epsilon_{(x)}^{\mu\nu\sigma\rho}\mapsto \tilde \epsilon_{(y)}^{\mu\nu\sigma\rho} =\epsilon_{(x)}^{\alpha\beta\gamma\delta}(J^{-1})^\mu_{\ \ \alpha}(J^{-1})^\nu_{\ \ \beta}(J^{-1})^\rho_{\ \ \gamma}(J^{-1})^\sigma_{\ \ \delta}=J^{-1} \tilde\epsilon_{(x)}^{\mu\nu\rho\sigma}$$
Therefore, we can write that the true transformation behavior is
$$\tilde \epsilon_{(x)}^{\mu\nu\rho\sigma} \mapsto \tilde \epsilon_{(y)}^{\mu\nu\rho\sigma} = \mathrm{sgn}(J) J\epsilon_{(x)}^{\alpha\beta\gamma\delta}(J^{-1})^\mu_{\ \ \alpha}(J^{-1})^\nu_{\ \ \beta}(J^{-1})^\rho_{\ \ \gamma}(J^{-1})^\sigma_{\ \ \delta}$$
The fact that the power of $J$ is now $+1$ means that the weight is now $+1$; the fact that we also have a $\mathrm{sgn}(J)$ means that $\tilde \epsilon^{\mu\nu\rho\sigma}$ is in fact a pseudotensor density of weight $+1$. Carroll does not discuss this because he assumes that the coordinate transformation in question is orientation-preserving, which implies that $\mathrm{sgn}(J)=+1$ and the distinction between tensors and pseudotensors (and their respective densities) can be ignored.
In summary, we contrast the actual transformation behavior of the $\tilde \epsilon$ symbols with their expected transformation behavior if they were genuine tensors to determine in what way the actual transformation behavior differs. If it transforms like a tensor except for an additional factor of $J^w$, we call it a tensor density of weight $w$. If it additional picks up a factor of $\mathrm{sgn}(J)$, we call it a pseudotensor density.