If there are thousands of transactions in a block, and I only need to prove one, do I just provide the hashes along the branch?
Yes. To be exact, just the associated TX and TX hash of other TX on involved branch.
How much smaller is this compared to downloading the full block?🧐
It's much smaller since AFAIK the data you need is only,
1. Block header (80 byte).
2. The transaction itself.
3. Total branch of the merkle tree multiplied by size of TXID (32 byte). For full block, i expect it'll have 13 branch which can store up to 8192 TX. So the size should be 416 bytes (13 x 32 byte).