Is it possible to update all spatial index extents in one query?
This is generally the way that I tackle rebuilding spatial indexes in a consistent way.  

This assumes that your geometries are all in the same projection and have already been indexed. It will exclude the usual ESRI Geodatabase System tables.  

I avoid having ArcGIS create or maintain indexes.  They never seem to get nice extents on the projections that I use.

declare @sqlCmd nvarchar(4000)

declare cSI cursor fast_forward for 
    select 'CREATE SPATIAL INDEX ' + quotename(i.name) + ' ON ' + 
            quotename(sc.name) + '.' + quotename(t.name) + '(' +  quotename(c.name)  + ') ' + 
            'USING GEOMETRY_AUTO_GRID WITH ' +
            '(BOUNDING_BOX = ( xmin=950000, ymin=4500000, xmax=3500000, ymax=7000000 ), ' + -- Alter to suit
            'CELLS_PER_OBJECT = 1000, PAD_INDEX  = ON, DROP_EXISTING = ON)' sqlcmd
    from sys.tables t
        inner join sys.schemas sc on t.schema_id = sc.schema_id
        inner join sys.indexes i on t.object_id = i.object_id
        inner join sys.index_columns ic on i.index_id = ic.index_id and ic.object_id = t.object_id
        inner join sys.columns c on ic.column_id = c.column_id and t.object_id = c.object_id
        inner join sys.spatial_index_tessellations s on i.index_id = s.index_id and i.object_id = s.object_id
    where i.type_desc = 'SPATIAL'  -- spatial indexes
        and (t.name not like 'GDB_%' and t.name not like 'SDE_%') -- exclude ESRI system tables

open cSI
fetch from cSI into @sqlCmd

while @@fetch_status = 0
begin
    print @sqlCmd
    exec(@sqlCMD)
    fetch from cSI into @sqlCmd
end

close cSI
deallocate cSI