In BitcoinJ, what is the purpose of Peer?
When should I use which construct?


Use PeerGroup, unless you want to connect to a specific Bitcoin node.


  From the code, it seems that we should only be interested in PeerGroup and not Peer.


PeerGroup will construct Peer objects. It's necessary, even if you don't use it directly.