This is the intended behavior.
When you create a multiparty call, you may have other attendees join the call at any moment. The agent is the host, so they are the only one able to close the call, because if at any time an attendee hangs up or leaves the call, this doesn't mean that the call is ended. Another attendee might join, or someone who left might want to come back, etc.
We have no way of knowing the intention behind 'hangup' action on the guest side, which is why it's up to the agent to decide if the call is over.