You included your if/else statement inside the first for loop. Thus it printed to everyone, then looped again to print another time.
It's a bit difficult to explain, so I'll just do this:
if SERVER then
hook.Add( "OnRoundSet", "DR Money", function( round, winner )
if round == ROUND_ENDING then
for _, ply in ipairs( player.GetAll() ) do
if ply:Team() == winner then
ply:PS_GivePoints( 25 )
end
-- Your print code is here.
end
-- It should be here
end
end )
end
Also, I don't know if it was just the code tags, but you should probably work on your tabs/spaces for each line. The chatprinting code was a bit hard to read for me without putting it into Notepad++.