Control what image you bake to
If we bake passes manually, they are baked to the selected texture node in the active objects material node tree.

We can create a texture image node, make it active, then assign it an image and bake a desired pass.

import bpy

BAKE_TYPES = ['DIFFUSE', 'GLOSSY', 'AO', 'NORMAL']

nodes = bpy.data.materials[0].node_tree.nodes
tex_node = nodes.new(type='ShaderNodeTexImage')
nodes.active = tex_node

for type in BAKE_TYPES:
    img = bpy.data.images.new('bake_' + type, 500, 500)

    # if you have images prepared, load them instead
    #img_diff = bpy.data.images['image_diff']

    nodes.active.image = img
    bpy.ops.object.bake(type=type)

nodes.remove(tex_node)