The code says it uses the public key for uploading/encryption, and the private key for downloading/decryption. It's useful to be able to split writing and reading with cryptographic guarantees, for security or organisational purposes. E.g. if a client only has the public key and should it be compromised, it can't read the data. Or it allows you to have less strict access controls on uploading clients.