There is already a mechanism for calling a simplifier for subscripted
functions in simpmqapply. It is simple and pretty much as efficient as
any other simplifier invocation:
:lisp (putprop '$f '(lambda (&rest l) (print l) (car l)) 'specsimp)
f[3](x)$
(((mqapply) (($f simp array) 4) $x) 1 nil)
Of course, the specsimp simplification function can dispatch further
if it wishes on the subscripts.
Whether subscripts are the right notation for any particular function
is a separate discussion.
-s