The easiest solution might be to create a new database role and grant the delete permissions to that role. This way you will only have to assign the delete permisions to the single database_role once (and when you add new tables) and then assign the users that require the delete permissions to this database role.
1. Create New Database Role
Create a new database role and assign it to a fixed database role:
CREATE ROLE table_deleter AUTHORIZATION dbo
_Instead of dbo you could use for example db_securityadmin_
This will create a new role in your database. Feel free to use a different name than my suggested
2. Assign Permissions to Database Role
After you have created the new database role, you will have to grant the role permissions to delete data from your talbes. This is done for each table:
GRANT DELETE ON OBJECT::<table_name> TO table_deleter
GRANT DELETE ON OBJECT::<table_name2> TO table_deleter
3. Add User to Database Role
Once you have granted the permission to delete data on all of your tables, all you have to do is assign the users to this database role.
ALTER ROLE table_deleter ADD MEMBER <one_of_the_users>
If you want to revoke the permissions in the future for one single user, it's as easy as setting off this command:
ALTER ROLE table_deleter DROP MEMBER <one_of_the_users>
But I Wanted to Allow The User to Truncate Tables
If you really want to assign the TRUNCATE permissions to individual users (or to the new database role), then you will have to assign the minimum permissions as you previously mentioned in your question.
2. Assign User The ALTER Permission alternate solution
Instead of my second step where you grant individual DELETE permissions to each table, you would assing the higher privileges to the database role:
GRANT ALTER ON DATABASE::<database_name>
...and then go from there.