I'm having some trouble conceptualizing how you want the results to look.
For each group in your input file you want a list of all users that are "vendors" and are also a member of another group named "Groups". Each "vendor" should report their name and their description properties. Is that correct? And you want it all reported on one line in a CSV?
If that's correct then the collection of the data is easy. The presentation won't work if you want a CSV that holds a reasonable number of columns . . . each member of the group would occupy two columns (name and description), and there would be two columns times the largest number of vendors in any of the groups in your input file.
OTOH, if you want one CSV row for each VENDOR and a column for each group of which they are a member, then you'd have a larger number of rows but the columns would only be as "wide" as the number of groups in the input file (plus two for the vendor name and description).
Here's some code that'll produce a PSCustomObject for each group that has an array of arrays for the vendors/descriptions.
$dn = (Get-ADGroup -Identity Groups).distinguishedname # "Enterprise Support/Groups"
Get-Content c:\BAS\grouplist2321.txt |
ForEach-Object {
$vendorsingroup = @()
$groupname = $_
Get-ADGroupMember $_ | # NOTE: This will return Users, Group, Computers, etc., so Get-ADUser may throw errors
ForEach-Object {
$u = Get-ADUser -properties Description -Filter {(Description -like "Vendor") -and (MemberOf -contains $dn)}
$x = $u.Name, $u.Description
$vendorsingroup += ,$x # the "magic comma"!! Create an array of arrays
}
[PSCustomObject]@{
GroupName = $groupname
Vendors = $vendorsingroup
}
}