why did convolution coding achieve BER less than Reed-Solomon?
Reed-Solomon codes are good for correcting bursts of errors (such as those that often occur in computer memory systems such as RAM, or on less volatile media such as CDs and DVDs) or at the output of block decoders -- either a received word is completely correct, or it has multiple errors all within the codeword length -- or at the output of convolutional decoders -- if a decoder goes off the correct path, there is a burst of errors until the decoder gets back on the correct path. Reed-Solomon codes are not all that good for correcting random errors such as those that occur in AWGN channels.  It has been common practice for many students (as well as their faculty member advisors, who really ought to know better), not to mention engineers in the communications industry, to put up graphs comparing how well convolutional codes do compared to Reed-Solomon codes in preparation for touting the advantage of their thesis work or product over the competition.
As a matter of fact, systems needing to meet the most stringent performance criteria often use a concatenated coding system in which the outer code is a Reed-Solomon code and the inner code (the one whose codewords are transmitted over the channel) is a convolutional or turbo or LDPC code, all of which are well-matched to the characteristics of the channel.