Don‘t trust New Yorkers (because they can be naturally rude) or Hoosiers (Indianans, such as Jerry)- just kidding folks. Trust a Californian! (We speak the best English in the country you know- I don’t know what those other people are speaking outside this State....

)
Anyway, here‘s my take on it. You can say „I‘m a vegan/vegetarian“ and that’s fine. Native speakers say that all the time. They say, probably equally, „I‘m vegan/vegetarian“, and where I live no one pays a bit of attention to the difference. Is there a technical rule on it? I have no idea, but to me the „a“ in either case is just optional. I suppose you might try to split hairs and make some kind of distinction, but locally no one does. If I said I were vegan/a vegan no one would bat an eye and the people I live around wouldn’t even notice the slightest difference (maybe the locals are just dumb? I don’t know).
As to gay, THAT is a whole different matter. The expression is „I am gay/straight/trans/bi“ whatever. Now, having said that, I have heard people say „He’s a gay you know!“ (with a look of horror in their face). I‘ve never heard anyone say they were „a straight“, just they are straight, but they would oddly enough say „a heterosexual.“ Or you could say „a homosexual“ but that sounds clinical and really old, like pre-1970s era. Now that I think about it, that does seem inconsistent. Same goes for „a bi“ or „a trans“. Never heard that said like that ever; but, I have heard people, sort of derogatorily say someone is „a trannie.“ So, is there a rule there? Yeah, some sort of rule, but I really don‘t know what it is.
But, to call someone „a gay“ does carry a negative connotation to it. Definitely and always. It sounds like someone out of the 1950s. Sort of like saying „he’s a pervert.“ That’s probably the connection. During the period of gay liberation, especially in San Francisco, it was always „to be gay“ or „he is gay“ or „she is lesbian“, but oddly it was never derogatory to say „She is a lesbian.“ Why? I have no idea. In fact, just saying „She is lesbian“ sounds a little odd me. Not terribly so, but I wouldn’t say that myself.
So, it‘s a really good question, and one that deserves a good answer, but the answer is much more nuanced than one would think. I’m just saying what sounds right to me. „Jill is a lesbian and John, her brother is gay.“ Don‘t ever say „John is a gay.“ That sounds like „John is a pervert“ or something and needs electroshock treatments or something. Not cool.
Here‘s where Alharacas can help out. In German I learned that when you were talking about, perhaps immutable characteristics or identities, professions, you left out the „a“, or the ein, the indefinite article. So „Er ist Berliner“ instead of like JFKs famously embarrassing „Ich bin ein Berliner“, (a Berliner is a jelly doughnut, which are my favorite actually- jelly filled with lots of sugar on top). Or, „Er ist Amerikaner/Deutscher“ that sort of thing. Religions, nationalities, professions. „Sie ist Rechtsanwältin“ or „sie ist Ärztin.“ With gay men anyway, German does generally the same- „Er ist schwul.“
I‘m reading a really good book at the moment that was published in 1978 by a US gay activist, Larry Kramer, translated into German, called „Schwuchteln.“ Schwuchteln means „
****“ in German, which is the name of the original English book (It’s actually an excellent book critical of the excesses of gay male -rather extreme -sexual promiscuity in the late 70s in New York, about 3 years before the HIV/AIDS epidemic broke). It‘s funny, and thought-provoking and not homophobic in the least. Quite the opposite. But, it was boycotted by gay people in NYC when it first was published, even though it was 100% accurate in its depictions of what was going on, and New York‘s only gay bookstore in 1978 (Oscar Wilde books or something) banned it from their shelves. The forward to the book describes it as almost eerily prophetic of something really bad about to come, which in fact did. I love the writer of the forward‘s remarks (written on a re-publication in 2002), „When young, the body is like a never-tiring workhorse. Throw all the abuse at it you like, and it just keeps bouncing back. BUT, it neither forgives, nor forgets that abuse.“ Great quote. And, so true.
My hunch is one would say „Er ist eine Schwuchtel“ (die Tunte is another word for it, which is like queen or pansy, or die Tucke) and I think you would use the eine there too in German (to say Er ist Schwuchtel just sounds off to me). „Er ist eine Tunte.“ Schwuchtel, Tunte, Tucke all carry the feeling that the person is effeminate, whereas schwul, to my knowledge, doesn’t.
I don't know why exactly, but it just sounds weird to me to leave out the indefinite article with Schwuchtel, Tunte, or Tucke. With German I rely a lot on instinct, like in English, but Alharacas is the expert here.
Also, I learned there is an exception when dropping the indefinite article, ein/eine where an adjective is between the indefinite article and the noun. When that is the case you have to use the indefinite article. So, „Er ist ein gesunder Deutscher“. That exception I recall from 40 years ago. And, you have to do that too in English- „he’s a healthy German.“ But, with English, „He’s a nice gay“ just doesn’t work either. It just sounds weird (sounds like it’s off Google-Translate or off of WOW air’s Icelandic to English translations inside their planes from last year). You can say „he’s a gay person“ and that’s okay, or a „nice gay person“. But, for some reason, you need the „person“ part in there, otherwise it sounds VERY derogatory to my ear.