As it turns out, the truth is a bit more complicated. In reality, one button press = 2 inputs; one input when you press the button, and one input when you release the button. You can verify this easily by doing to following: press any punch, say jab, then hold it down for the duration of a QCF motion, then release it. You will get a fireball to come out if you did it correctly, despite the fact that you didn't press punch at the end of the QCF motion.
2. Press punch 1 frame early: the input from releasing the button happens on the required frame, so you get a successful combo.