Is setting
EXEC sp_addrolemember N'db_datareader', N'User'
EXEC sp_addrolemember N'db_datawriter', N'User'
Is the same as granting SELECT/INSERT/DELETE/UPDATE on all tables to User
GRANT SELECT ON [Schema].[Table] TO [User]
GRANT INSERT ON [Schema].[Table] TO [User]
GRANT DELETE ON [Schema].[Table] TO [User]
GRANT UPDATE ON [Schema].[Table] TO [User]
From MSDN (db_datawriter, db_datareader) :
So, the effect is the same, only easier to administer in the first case.