What is going on with selection?
4 edges are also selected.
Have noticed this too.
Remember that after the bisect as well as the four selected verts, there are 4 selected edges.  Even though you deselect the verts, the edges aren't picking this up, so when re-enter edit mode the verts of the selected edges are selected.
To make sure nothing is selected deselect the lot.
Bmesh has a select flush for this, and now a select_set to validate selection.
How does Blender know which faces and edges to automatically select when doing a multi-vert selection?
PS. A copy of sorts of the mesh is created when entering edit mode, and written back when exiting.. or calling
ob.update_from_editmode()

hence the different memory ref.
EDIT re edit and unaccept.

An answer below says that this is happening because there are edges
selected. And it doesn't happen if I use this same approach to select
edges. However,

which at the time of posting can assume is this answer... test on plane (no geom selected, in OBJECT mode)
&gt;&gt;&gt; ob = C.object
&gt;&gt;&gt; me = ob.data
&gt;&gt;&gt; C.mode
'OBJECT'


if I start from having no components selected
 

&gt;&gt;&gt; [v.select for v in me.vertices]
[False, False, False, False]

&gt;&gt;&gt; [e.select for e in me.edges]
[False, False, False, False]


then select the same edges
 
Edge zero by way of example.

&gt;&gt;&gt; me.edges[0].select = True
&gt;&gt;&gt; [e.select for e in me.edges]
[True, False, False, False]

&gt;&gt;&gt; [v.select for v in me.vertices]
[False, False, False, False]


then enter and exit edit mode,
 

&gt;&gt;&gt; bpy.ops.object.editmode_toggle()
{'FINISHED'}

&gt;&gt;&gt; C.mode
'EDIT_MESH'

&gt;&gt;&gt; bpy.ops.object.editmode_toggle()
{'FINISHED'}

&gt;&gt;&gt; C.mode
'OBJECT'


the vertices remain unselected.

&gt;&gt;&gt; [e.select for e in me.edges]
[True, False, False, False]

&gt;&gt;&gt; [v.select for v in me.vertices]
[True, False, True, False]


So it's not just about having the edges selected.

Sure appears to be the case to me.