Мисля, че наистина зависи от реализацията, но можете да получите представа за разликите, като разгледате източниците на MySQLdb. В зависимост от опциите, mysqldb fetch* запазва текущия набор от редове в паметта или от страна на сървъра, така че fetchmany срещу fetchone има известна гъвкавост тук, за да знае какво да запази в паметта (python) и какво да запази от страна на db сървъра.
PEP 249 не дава много подробности, така че предполагам, че това е за оптимизиране на нещата в зависимост от базата данни, докато точната семантика е дефинирана от реализацията.