Do buffers only work for species of the opposite variety? (I.e. weak acids buffer strong bases and vice versa)
Think of it in terms of the equilibrium constant: 

$$K_{c}\; =\; \frac{[\ce{H3O+}][\ce{HCO3-}]}{[\ce{H2CO3}]}$$
Let's assume for a moment that there are 2 mols of $\ce{H3O+}$, 2 mols of $\ce{HCO3-}$, and 1 mol of $\ce{H2CO3}$. In our pretend scenario, $K_c$ is 4 (however in reality the $K_c$ is much lower and is about $2.5 \cdot 10^{-4}$). When you add an acid, the $\ce{H3O+}$ concentration rises. Lets assume there are now 9 mols of $\ce{H3O+}$. So now the reaction quotient is

$$Q\; =\; \frac{9\cdot 2}{1} = 18$$

Because $Q &gt; K$ the reaction has to shift left in order to compensate and go back to the equilibrium state. If 1 mol of $\ce{H3O+}$ recombines with 1 mol of $\ce{HCO3-}$ to give back 1 mols of $\ce{H2CO3}$ now you have

$$Q\; =\; \frac{8\cdot 1}{2} = 4$$

and because $Q = K$ the reaction is now at equilibrium.

So while the total number of mols of $\ce{H3O+}$ did increase, the effect of it was dampened by the buffer (as it only went up to 8 mols instead of 9 mols).