There are plenty of differences, and valid use cases for both.
Functions are a mostly to minimize repetitive code. Things that you're going to be doing over and over, sometimes with maybe just a few variables. They are also triggers, which means they fire once and done. Using them in a loop should not cause problems and is common.
Enabling/Disabling Groups can be used for a variety of things. Unlike a function, you can have non-triggered events running in a group. So that when a group is active, everything in it is running. This makes groups useful for turning off 'functions' (groups of events) that might be unnecessarily using up resources if they're running when they don't need to be (which, in my opinion, usually means your code could should probably be more effecient).
Many people activate/deactivate groups though, I assure you. There's absolutely nothing wrong with that.
Hope that helps!