Checker deselect with disconnected faces on same object
Okay, as Jachym Michal pointed out checker deselect only looks in all directions and stops at disconnected geometry. It doesn't jump over to the next elements index of the object when it finds disconnected geometry.
Here is a script that selects every other polygon, assuming their indices are ordered.
import bpy
obj = bpy.context.active_object
i=0
for p in obj.data.polygons:
    if i%2:
        p.select = True
    i+=1