Thanks, looks like a reasonably quick status can be obtained from all submodules with:
git submodule foreach --recursive 'git status -s'
$ time git submodule foreach --recursive 'git status -s'
Entering 'study1'
? data/processed
Entering 'study1/data/bids'
Entering 'study1/data/processed'
? freesurfer
Entering 'study1/data/processed/fmriprep'
Entering 'study1/data/processed/freesurfer'
?? testme.test
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
...
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
Entering 'study1/data/processed/freesurfer/sub-XXXXXXXXXXX'
Entering 'containers'
real 0m39.430s
user 0m23.770s
sys 0m38.837s