Why can an output only have a single callback function?

I agree. It would be great if we can have more than one callback for an output. For buttons especially it’s hard to use two buttons as inputs in one function, since it’s hard to tell which one is clicked.
But instead of using n_clicks as input, maybe you can try the click event.
The code from this post:

@app.callback(Output('target', 'children'), [], [State('input', 'value')], 
              [Event('submit', 'click'), Event('other-action', 'click')])

It’s using two click event to trigger the function. So you can probably modify your code to use just one function for the output then you won’t be needing more than a single callback.