The reaction happens because delta G < 0.
delta G = delta H - T * delta S
When acid and bases are mixed they usually develop heat (exoterm), which means a negative delta H.
Delta S are a measure of the dissorder of the system. When NH4Cl is formed (salt) the system become more ordered (lattice), which means delta S become negative. But delta H must be more negative then T * delta S.
Hope this helps.
Another way to think about is, HCl is a strong acid, that reacts with almost every bases (NH3 is a weak base, due to its free electronpair, which can accept the hydrogen-ion from HCl ).