The hardware serial port of the arduino has a transmitter registers, and a holding register.
If you set it up for 100 bits/s (Serial.begin(100), you have set hardware to shift out bits at the 100 per second rate, regardless of the CPU frequency.
If you output one byte (Serial.print('A', BYTE)), the function will return immediately, and the 'A' will dribble out the serial port for the next 1/10th of a second or so (each byte takes 10 bits, all together.)
If you output two bytes (Serialprint("AB")), the function will still return immediately and your sketch can go off and do other things; the first byte will start dribbling out immediately, and the second one will go into a buffer register waiting for the first byte to finish. In about 1/10 second, the second byte will start transmitting, and the buffer will be empty and ready to receive another byte. if your sketch comes by with 1/5 second or so and provides more characters, the output device will never even see a pause...
1/5 second is a long time by the standards of a 16MHz CPU.
If you output three characters (Serial.print("ABC")), the hardware resources will be exhausted, the function will take 1/10th second for the 1st character to be transmitted before it can put the last character into the buffer register, so the sketch will "stick" there. Same thing for more than 3 characters; it will take about (n-2)*0.1 s to return...
It is fairly easy to use interrupts to implement an additional set of buffers for output characters in software; there have been a couple of implementations done that change the serial library to do this. In this case, you'd typically be able to output "bursts" of up to 64 bytes without having to wait for the serial port; but there's still a limit. If you try to output continuously, you will eventually not be able to output more than 10 bytes/second.