To answer your question, it's possible both hardware and software can cause garbage printing issues. The common software issue, as you saw, is the mismatch of baud rates between two communicating devices. The different rates of communication essentially become foreign languages as the data is receiving and transmitting independently and there is chaos, which gives us garbage.
A common hardware issue can occur when trying to communicate with more than two serial devices on one serial bus. When two devices communicate back and forth on one line, there is some order. When there are multiple devices communicating on one line, there is chaos, all devices could be speaking at once or none at all, again producing visual garbage on the Serial Monitor.