NOTE: You could also allow or deny ssh access by using SSH PAM CONFIG (recommended for a large number of users) or with TCP Wrappers but you would need to get the libwrap.a library to make it work with SSH.
If you want to restric access via SSHD CONFIG, you can use these four entries:
AllowUsers
AllowGroups
DenyUsers
DenyGroups
The pattern matching occurs in the following order: DenyUsers,AllowUsers,DenyGroups,AllowGroups. Which means that, for example, if you add a user to both entries (AllowUsers and DenyUsers) this would result in the user being denied no matter the order in which the rules appear in the config script.
To accomplish the 3 restrictions you mention, you could try creating a group sshgroup and configure every user account, except for user1, to be included in the group. Finally you could create a script to add the users in sshgroup to a rule in your sshd_config file that always includes:
AllowUsers user1@host1
resulting in:
AllowUsers user1@host1 user2 user3...
To keep the sshd config file up to date, you could call the script every time a user is created/deleted. Don't forget to restart the ssh daemon after every change to the config file.
Here you can find a script "pop_user_allow_ssh" that is also trying to generate a user list.
You don't mention your OS but this is how I did it on AIX. I hope the idea helps.