Since 'format' is not in the standard, the supported format string passed to element-format argument may vary among implementations.  It may cause writing portable code difficult.

I can think of two ideas (either or both):
- Be explicit on the supported format strings, e.g. "at least srfi-48 format strings should be recognized"
- Allow to pass a formatter procedure (obj -> string) to do the formatting.

The latter also allows finer control over heterogeneous array (e.g. #2a((#u8(1 2)) (#f32(1.0 2.0)) and you want to control integer array and flonum array separately).