Some communications protocols send each octet of data using eight data bits plus some framing bits. When sending data via typical async protocol, there may be up to nine consecutive "0" bits and an arbitrary number of consecutive "1" bits. A simple scrambler can map ten bits of which the first two are guaranteed to be 10, into ten bits which are guaranteed not to have more than about six consecutive matching values.
Using a more complicated 8b/10b encoder will make it possible to reduce the worst-case number of consecutive matching bits further than would be possible using a simple scrambler, and also offer guarantees about line balancing (ensuring that the total numbers of zeroes and ones transmitted stay close to each other). Gaining these benefits requires more complicated circuitry, and also requires giving up some of the timing flexibility that had been offered by an async protocol. For example, an async protocol could deliver 100 bytes over 1100 bit times, at a continuous "smooth" rate of one byte every eleven bit times. Using an 8b/10b encoding, it would be necessary to send out a byte, then an idle character, then ten bytes, then another idle character, etc. For many purposes that wouldn't matter, but for some purposes it might. If an async receiver were wired to a DAC that immediately output each sample as it was received, passing the signal through a bit synchronizer and scramble would add 0.5 bit times of jitter. Passing it through an 8b/10b encoder would add 5 bit times of jitter.