Myślę, że rzeczywiście zależy to od implementacji, ale możesz zorientować się w różnicach, zaglądając do źródeł MySQLdb. W zależności od opcji, mysqldb fetch* zachowuje bieżący zestaw wierszy w pamięci lub po stronie serwera, więc fetchmany vs fetchone ma tutaj pewną elastyczność, aby wiedzieć, co zachować w pamięci (pythona), a co zachować po stronie serwera db.
PEP 249 nie podaje zbyt wiele szczegółów, więc sądzę, że ma to na celu optymalizację rzeczy w zależności od bazy danych, podczas gdy dokładna semantyka jest zdefiniowana w implementacji.