From personal experience, I find that having between 50-100 features per cell gives good performance. With datasets that have features that are a uniform size and distribution (something like regularly spaced points) this is fairly easy to achieve.
But really, I don't have to deal with many datasets that the grid size makes that big of a difference, so I leave the ESRI generated values. For the datasets that I tune extensively, I experiment to see if I can speed things up. Usually I do this through SQL Plus using the ST_EnvIntersects operator and auto trace, in a dev environment of course.
select index_name, table_name, srid, grid from sde.st_geometry_index where table_name = 'MYTABLE';
--alter the index to the new grid size, must keep the same srid.
alter index travis.myindex rebuild parameters ('st_grids=90,0,0 st_SRID=300002');
alter system flush buffer_cache;
alter system flush shared_pool;
set timing on
set autotrace trace exp stat
select * from travis.mytablewhere sde.st_envintersects(shape, -90, -90, 90, 90) = 1;