In a typical Western blot, the sample buffer contains Tris-HCl and the running buffer contains glycine. When you have loaded your samples and applied a current, your proteins, the chloride ions, and the glycine start to flow throw the gel. Glycine is a zwitterion in the stacking portion of the gel (~pH 7). The chloride ions take the lead and the glycine in the running buffer takes up the rear: your protein sample gets trapped in between them in a “moving boundary.” Once the pH 9 resolving gel is reached, glycine passes the protein sample because it ionizes and migrates faster. With the boundary gone, the protein can migrate by length/charge.