Why? Because they can get away with it, of course. In short - why not?
You may want to read the answers to this similar question (my answer is the one accepted by the OP).
Who has the money? The banks, who else. I have found that some banks are capable of sending/receiving ACH transfers faster than others. I have accounts in two banks, lets call them A and B. If I send money (push) from A to B, it may take several days. But if I decide to pull the money from A to B by originating the transaction through my account at B - the money arrives the next day! So the actual transfer only takes a night, one business day. Its just the direction that matters - if the bank has to give the money out, it will do all it can (including taking 2-3 days for "processing") to keep the money as long as possible. But when another bank charges them - they have no choice but to pay. By the way, bank B behaves better - when I send the money from my account at B, it arrives to A the next day as well.
Try a similar experiment. Instead of originating the transaction at the sender bank - try to originate it at the receiver bank, see how long it takes then for the money to appear on your account after it disappeared from the other one.