In the zero knowledge proof using QR, why do we even bother with the server sending us $b = 0$ back? As I understand it, the server selects $b = 0$ or $b = 1$. If $b = 0$, then the client (Alice) generates a random number $r$ and sends back $r^2 \bmod x$, while if $b = 1$, then Alice sends back $r^2 \, y \bmod x$. How is $b = 0$ of any value though? Why can't we just stick with $b = 1$?

This attack shows that the protocol cannot be sound if the challenge is unique.
Hence, the verifier should flip at least one coin.

Why $b \in \{0,1\}$

In the soundness proof, we retrieve a witness as follows:
Running the (cheating) prover twice with distinct challenges, we obtain two accepting transcripts
$$(a, b_0, z_0) \text{ and } (a, b_1, z_1).$$
Since they pass the verification, we have
$z_0^2 \equiv y^{b_0} \cdot a \pmod{x}$
and
$ z_1^2 \equiv y^{b_1} \cdot a \pmod{x}$.
Therefore, we have $z_0^2 \cdot y^{-b_0} \equiv a \equiv z_1^2 \cdot y^{-b_1} \pmod{x}$
and $(z_1/z_0)^{2} \equiv y^{b_1-b_0} \pmod{x}$.
If we select a challenge from $\{0,1\}$, the difference $b_1 - b_0$ is $1$ or $-1$.
Hence, we obtain $z_1/z_0$ (or $z_0/z_1$) as a quadratic residue of $y$.

The point is that the difference $b_1 - b_0$ is always $\pm 1$.
This means that you can choose $b$ from another set, say, $\{2,3\}$ or $\{3,4\}$.

In this one, "we bother with" Bob sending Alice $\:b=0\:$ so that if $\:\: y\not\equiv 0 \;$ and
for both possible values of $b$, there exists a response which would cause Bob to accept
then $x$ is a quadratic residue $\:\pmod n\;$ .