I think there are a few ways to do this. One way is this.
Create an attribute that holds an integer and doesn't show on the frontend. Name this "Number of Associated/Child Products".
Create an observer to hook onto the
catalog_product_save_before
event to save the number of child products for grouped products only.Rewrite
Mage_Catalog_Block_Product_List::_getProductCollection
to add anORDER BY
clause using your custom attribute.$collection->getSelect()->__toString()->order('e.my_attribute ASC')
(orDESC
) is the syntax.
This will require you to go through all of your grouped products and save them without once to populate the custom attribute. This in effect acts as a global position value as opposed to the category product positions, which apply to specific categories. I've never tried this, but it should work.