When gigabit links fall back to 100 Mbit the usual cause is bad cabling. 10, 100, 1000 and even 10,000 Mbit/s coexist nicely on the same switch (or possibly even faster but faster switches support 10 and 100 Mbit/s less and less). Check the NIC statistics for FCS errors, runts or other drops.
1000BASE-T requires all four twisted pairs to work while 100BASE-TX only uses two of them. Also, 1000BASE-T is slightly more picky on the cable as the line encoding is a bit more delicate. Quite a few devices fall back to 100BASE-TX when gigabit negotiation fails. The link may also fail altogether as well.
Everything else that's been described here - buffer overflow or flow control has NO impact on the negotiation link speed (physical layer L1) and will NEVER cause a link drop or fallback.
A switch always receives a frame completely before forwarding it (store-and forward) - most do anyway, across different link speeds all switches use store-and forward. It's no problem at all to receive a frame on one 10 Mbit/s port and forward it out another 100 Gbit/s port or vice versa.
Flow control might interfere with the effective throughput rate but never changes the physical layer link rate.
When a gigabit port tries to send a full rate flow to a 100 (or 10) Mbit/s device and flow control is active on all devices, the pause frames sent from the low-speed device will throttle the gigabit port of the sender even if another receiver might want to receive full rate - this is called head-of-line blocking and is a design flaw.
Legacy flow control should generally not be used unless you understand its function and it works in your scenario. Flow control is much better left to the transport layer (esp. TCP) or application layer protocols.