I think it depends on how the invitations are worded. If it's "Come on over for a BBQ" then bringing something is a nice gesture but not required. It is assumed that the host is handling things. Now, I always offer, but if the host says, "Oh, we don't need a thing, thanks," then I bring a bottle of wine or a small gift (bath soaps, plant, etc.). I don't usually bring flowers because the host has to stop preparations to go find a vase, you know?
But if the invitations are worded as a "pot luck," then there are 2 ways to go (but everyone is expected to do something). "Pot luck" technically means nothing is arranged, and everyone brings what they want, and all the guests are fine with that. It makes it fun.
Others really mean "a shared meal" and want to organize it. We have a group that gets together regularly, and the hostess provides paper goods/utensils and a clean house, and is not expected to cook/shop. But that's our arrangement with each other.
Another way to handle it, which works great for large gatherings but also might solve your problem, is to use something like Sign Up Genius. A lot of our schools use it for class gatherings and volunteer events. We use it for our neighborhood block party and for a meal chain for someone who is ill and needs help over weeks/months. It combines the invitation, the directions, and the needed sign ups, and it even sends reminders to people reminding them of what they agreed to bring. You can put in any categories: let's say you have 30 people/families coming: you might put in 5 appetizers, 5 main dishes, 5 sides, 5 salads, 5 desserts, and 5 for drinks/supplies. Then people get to choose what they want, they put in the specifics (pasta salad, sweet & sour meatballs, lemonade....) and everyone else can see what already was chosen. And in your case, it would make it obvious to all that certain people have not signed up for anything.
Beyond that, if someone doesn't do something, you have 2 options: stop inviting them, or specifically call and ask if they could help with either A or B. Let them choose, or perhaps they would suggest choice C, or they can say no to your face.
After that, you let it go. We find with our block parties that there is just so much food, it doesn't matter. As for taking home leftovers, this is usually a blessing unless they are taking unopened bottles of wine! We always keep containers around (from deli salad purchases or supermarket take-out bars) and put them on the table toward the end of the evening, inviting people to take home what they would enjoy. Saves clean-up, prevents food waste.