They both can do the same, it's just with
usermod you can do it wrong if you don't pay enough attention.
In this wiki from Arch Linux (it is the same for other distros), it's explained:
To add a user to other groups use (additional_groups is a
# usermod -aG additional_groups username
Warning: If the
-a option is omitted in the
usermod command above, the
user is removed from all groups not listed in additional_groups (i.e.
the user will be member only of those groups listed in
gpasswd may be used. Though the username can only be
added (or removed) from one group at a time.
# gpasswd --add username group