I've heard estimates ranging from 5-10 times bigger, but is it possible to come up with a more precise answer? By how much will this figure change after RingCT is implemented? What other factors might affect this size difference in the future? That is, can it be optimized?
Well, looking at a few transactions gives you the answer quite plainly, at least for the Monero side. I'm not familiar with Bitcoin transaction sizes, but I think they're a few hundred bytes, typically.
A small tx, 4 inputs and 4 outputs: 1692 bytes. http://moneroblocks.info/tx/f634025ef2d0fd0836ce2a5207e782609c3250cd5f8a0dd5269ce4e5c2f71bb7
A large tx, 21 inputs and a whopping 40 outputs: 9464 bytes. http://moneroblocks.info/tx/069884b2ff99fb9b9a3f026d51c204c2abf5e23e23b6ce5c8fc73245cf81f67a
With RingCT, transactions will start at about 6.7 kB, and typically increase not a lot from there, since most transactions are expected to be 2 inputs and 2 outputs, typically. A RingCT tx with 2 inputs, 2 outputs, and mixin 4 looks like about 13 kB. Interestingly, making it mixin 85 only takes it to 24 kB, which means a large increase in privacy only takes 50% more space.