Setting this up the same way as in Maya looks like it probably works at a technical level - I've pasted a node that does this at the bottom of this message.
I wasn't really able to confirm that it's working though, since I can't really think of any software that will load a uint exr properly - it's a pretty uncommon format. I guess Maya's Arnold Renderview is doing something special to translate ids to colors.
I'm not quite sure why you want this integer id aov? The most useful options would probably be just to make a custom aov with the color output from Arnold's `utility` shader in "id" mode ( you could do this using the ArnoldAOVShader node ) if you want a color EXR with different colors for each object, or if you really want ids rather than colors, maybe use cryptomatte?
-Daniel
"""
import Gaffer
import GafferScene
import imath
Gaffer.Metadata.registerValue( parent, "serialiser:milestoneVersion", 0, persistent=False )
Gaffer.Metadata.registerValue( parent, "serialiser:majorVersion", 61, persistent=False )
Gaffer.Metadata.registerValue( parent, "serialiser:minorVersion", 1, persistent=False )
Gaffer.Metadata.registerValue( parent, "serialiser:patchVersion", 1, persistent=False )
__children = {}
__children["Outputs"] = GafferScene.Outputs( "Outputs" )
parent.addChild( __children["Outputs"] )
__children["Outputs"]["outputs"].addChild( Gaffer.ValuePlug( "output3", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ) )
__children["Outputs"]["outputs"]["output3"].addChild( Gaffer.StringPlug( "name", defaultValue = '', flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ) )
__children["Outputs"]["outputs"]["output3"].addChild( Gaffer.BoolPlug( "active", defaultValue = True, flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ) )
__children["Outputs"]["outputs"]["output3"].addChild( Gaffer.StringPlug( "fileName", defaultValue = '', flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ) )
__children["Outputs"]["outputs"]["output3"].addChild( Gaffer.StringPlug( "type", defaultValue = '', flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ) )
__children["Outputs"]["outputs"]["output3"].addChild( Gaffer.StringPlug( "data", defaultValue = '', flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ) )
__children["Outputs"]["outputs"]["output3"].addChild( Gaffer.CompoundDataPlug( "parameters", flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ) )
__children["Outputs"]["outputs"]["output3"]["parameters"].addChild( Gaffer.NameValuePlug( "", Gaffer.StringPlug( "value", defaultValue = '', flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ), True, "member1", Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic ) )
__children["Outputs"].addChild( Gaffer.V2fPlug( "__uiPosition", defaultValue = imath.V2f( 0, 0 ), flags = Gaffer.Plug.Flags.Default | Gaffer.Plug.Flags.Dynamic, ) )
__children["Outputs"]["outputs"]["output3"]["name"].setValue( 'Batch/Arnold/TestID' )
__children["Outputs"]["outputs"]["output3"]["fileName"].setValue( '${project:rootDirectory}/renders/${script:name}/testID/testID.####.exr' )
__children["Outputs"]["outputs"]["output3"]["type"].setValue( 'exr' )
__children["Outputs"]["outputs"]["output3"]["data"].setValue( 'id uint' )
__children["Outputs"]["outputs"]["output3"]["parameters"]["member1"]["name"].setValue( 'filter' )
__children["Outputs"]["outputs"]["output3"]["parameters"]["member1"]["value"].setValue( 'closest' )
__children["Outputs"]["__uiPosition"].setValue( imath.V2f( -24.3499985, -21.2696781 ) )
del __children