During I2C Slave Transmit, who drives ACK/NACK?
I am not sure if your question is focused directly on some particular feature of Arduino UNO (in that case it is bit unclear to me what are you asking), but for any I2C communication in general, it is the best to check I2C specification, in particular page 10 in current version.

Short answer to your question is: ACK/NACK bit is set by the party which just received a databyte regardless of master or slave. For slave sending data to master it is thus master who should drive SDA for ACK/NACK bit.

Particular cases when NACK should be sent instead of ACK are listed in the specification. Slave should ACK or NACK address depending on if it is its valid address and if it is willing (or able) to communicate in the moment. It should ACK any received databyte from master except when it is unable to receive any more data or byte received is in some way invalid (though, in practice, it is probably good idea to not expect any particular slave's ACK/NACK behavior here except if you have found it explicitly mentioned in the datasheet).

Master, OTOH, should ACK each byte read from slave except the last byte it is going to read in current transaction. Last byte read before issuing STOP or repeated START should be NACKed by master.