Answer :

George. As for why he did it.. He thought that it would be better for him (George) His best friend should do it rather than being Curley or one of the others. He kills him out of love. Since Lennie accidentally killed Curley's wife, George knows that there is no way to save him now