This happens because it is a ripple counter and ripple counters will produce glitches that will cause your intermediary reset circuit to reset even when you believe 1111 isn't present. You need to have a better circuit. When the result is settled at 8 and you clock the circuit one more time, you get a series of intermediary values like this: -
- 1000 = 8 (settled result waiting for next clock)
- 1001 at the instant the next clock comes along
- 1011 pretty soon after the above clock occurred
- 1111 a short time later and this resets the circuit producing your error
- 0111 <-- it never gets to 7
As you can see, for each clock, the flip-flops ripple through their results hence, why it's called a ripple counter.