For BF3 I'd suggest doing the Origin trick to get it. Assuming you have an Origin account already, make another one and the set the birthday for 2 days after the day you made the account. 2 days later, you'll receive a birthday coupon from Origin for that new account, the coupon is 25% off a purchase. You can use this coupon on your real Origin account, thus you get BF3 for $44.99. This is the best deal you can get on BF3 so far and since BF3 requires Origin, installing it is a mute point anyways.
As for pre orders in general. I try and stick with Steam for my PC game needs nowadays. But I'll pre order from another digital vendor if it is a steamworks title if the price is cheaper. For physical copies, I've always liked Amazon.