There are just 2 realististic possibilities:
1. Mark Karpeles stole it
2. Somebody else from MtGox stole it.
The whole "there was a hacker, who used a bug to steal the Money"-Argument is just stupid.
This is the likeliest scenario if the amounts are really wrong...
Unless they have had some sort of bug in their implementation, which I can't leave out either. Meaning that trades have not been balanced on sheets...