This is neat! I particularly enjoy the choice of sliders to represent tape cells.
One idea: if you added a sleep[] to an appropriate point in the interpreter, you could slow execution down to produce a visibly animated view of execution. Adjusting how frequently you call it (every instruction, every 2 instructions, etc.) would give finer-grained speed control.