Why? Because they can get away with it, of course. In short - why not?
You may want to read the answers to this similar questionthis 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.