Why does calcium oxide react with sulfur dioxide?
One way of thinking about it is that calcium is a metal and therefore forms a basic oxide, $\ce{CaO}$. On the other hand, sulfur is a non-metal and forms acidic oxides $\ce{SO2}$ (or $\ce{SO3}$). So, the reaction between $\ce{CaO}$ and $\ce{SO2}$ can be considered an acid-base reaction. 

There is a somewhat obscure acid-base theory, the Lux–Flood theory, which is applicable to such reactions. In this context, bases are oxide donors (like $\ce{CaO}$) and acids are oxide acceptors (like $\ce{SO2}$).