SOLUTION!!
Ok, finally, i have figured out why this was broken. It's because it will put the emails back on to the .Mac servers in the order you move them there, irrespective of their actual dates
So, to fix it, delete all of your mail off .Mac (assuming you have a backup somewhere). Make a local folder in Mail.app and put the emails you want to put back on to .Mac in order into this folder.
Now, sort this newly made folder by date (Oldest first) so that your newest message is all the way at the bottom.
Next, and this is pretty important, you are going to want to transfer you email in chunks of about 40 at a time. For some reason if i tried 100 at a time, it would just randomly copy the first couple of messages and stop doing the rest and would also delete them off my local folder. Quite messy. Forget about doing 3000 messages at once, it will not work.
So, 40 by 40 take your oldest messages and put them back on to the .Mac server (in mail.app, by moving them from the local folder to the .Mac folder). It is a good idea to have the activity viewer open during this process (hit cmd+0) so you know to move on to the next batch of 40 once the previous batch is completely done moving and syncing. You will also want to turn the New mail checking interval to Manual -- that can bog it down too IMO.
And that's really it, just keep doing it until it is done. Each time, make sure all 40 made it there. It took me a while to get all my inbox and sent messages this way, but now it is all working properly on my macbook/iPhone/webmail...so to me it is worth it.
Hope this helps!