Jeg tror faktisk, det afhænger af implementeringen, men du kan få en ide om forskellene ved at se på MySQLdb-kilder. Afhængigt af mulighederne beholder mysqldb fetch* det aktuelle sæt af rækker i hukommelsen eller på serversiden, så fetchmany vs fetchone har en vis fleksibilitet her til at vide, hvad der skal opbevares i (pythons) hukommelse, og hvad der skal beholdes på db-serversiden.
PEP 249 giver ikke mange detaljer, så jeg gætter på, at dette er for at optimere tingene afhængigt af databasen, mens den nøjagtige semantik er implementeringsdefineret.