Unknown, but there's evidence supporting both Rookwood and Bellatrix.
Fred dies due to an explosion of unknown origin, as shown by the quote in your question. We're never told exactly who caused this explosion, so the short answer is we don't know.
However, shortly afterwards, we have this:
he saw many people running backwards and forwards, whether friends or foes he could not tell. Rounding the corner, Percy let out a bull-like roar, "ROOKWOOD!" and sprinted off in the direction of a tall man, who was pursuing a couple of students.
-- HP and the Deathly Hallows, Chapter 32: The Elder Wand
Now Percy has been involved in the Ministry, so it's possible he'd had experience of Rookwood there and had some particular strong reason to dislike him already. But his reaction seems very strong, towards a man he probably hadn't seen for weeks before this day. And he's just lost a brother, which is obviously fresh and raw in his mind. Revenge for that loss would certainly be a strong motivator.
Then a few chapters later on, we have this:
"What will happen to your children when I've killed you?" taunted Bellatrix, as mad as her master, capering as Molly's curses danced around her. "When Mummy's gone the same way as Freddie?"
"You - will - never - touch - our - children - again!" screamed Mrs Weasley.
-- HP and the Deathly Hallows, Chapter 36: The Flaw in the Plan
Again it's not conclusive evidence, since "going the same way as Freddie" could refer to being killed by Bellatrix or just to being killed, full stop. But then, how could Bellatrix even know about Fred? The death of a single young man is hardly noteworthy in that night of horrors, unless you either knew him personally (like his family, Harry, and so on) or were the one who killed him. Why would Random Death Eater feel the need to tell Bellatrix Lestrange that he'd killed Fred Weasley?
And Molly's words also seem to suggest Bellatrix was responsible for Fred. True, she's fighting Bellatrix because the latter tried to curse Ginny, but she didn't actually touch Ginny, so the question remains of what she meant by "touch our children again". Of course, we can't expect pedantry and careful choosing of words in the heat of battle, so perhaps Molly just mis-spoke slightly. Alternatively, "our" could be more general, referring not just to herself and her husband but to everyone opposing Voldemort, all the victims of people like Bellatrix, all those who'd lost children in this war.