This is working properly, emails are sent to the recipients but in the attribute Hi {{user}}, I want to show only the name of recipient because now it shows the array of all recipients.
The reason is, in your context object, you assign the users array to the user variable, and the template has no logic to call itself for a number of users found in the user variable.
The docs say about templating that you deal with 'object' - singular. In contrast, the docs explain under Common fields that to can take a comma separated list of recipients - plural. Very incomplete and I guess a bit confusing.
As @lichtjaeger and @mgiambanco stated, you need to handle the sending differently than you do right now. The EmailTemplate extension shows how to do it too.