Generally I would agree, but as this sentence is without context, it really depends on what the speaker means. I'd like to think that if they meant "He works at the pharmacy.", they would have said "Er arbeitet bei der Apotheke." instead of the format they used.
That being said, I think both should be allowed and while we would have very rare instances in English in which we would say "He has work at the pharmacy.", it's the better one-to-one translation if not the best general translation in this context-less instance.
There is almost no circumstance where a native English speaker would use the listed correct answer for this question. You could say that "He works at a pharmacy." The only way that the listed answer would work would be if the worker was a plumber or some other tradesman who was doing repair work at a pharmacy, but was not an employee of the pharmacy.
Is this sentence structure preferred over something like "Er arbeitet bei der Apotheke."?
Or do they mean two different things? "Er hat Arbeit bei der Apotheke." might be indicative of contract work. As in his next job is at the pharmacy. While "Er arbeitet bei der Apotheke." could mean his place of employment is within the pharmacy.
"bei" means AT or With?! I remember it was translated as "with" in some sentence.
Job wouldn't work because it would need an article in front of it. Also, the German word for job is Job so that's what I'd use.
I don't think employment quite works either. Employment has a few translations that don't involve the word "Arbeit" that are more commonly used (in my experience). The one I did find is Arbeitsverhältnis which is literally "work relationship", so that's probably more appropriate than Arbeit by itself (Arbeitself?!).
The shorter a sentence and the fewer details known about any given situation, especially when translating, the more a sentence is open to ambiguity which leads to multiple interpretations based on the fact that people are generally different as we don't all think the same. All languages suffer from this to some extent.
Does this mean that the person is working at the pharmacy, or that he needs to go to the pharmacy to get something from there?
Given the two, I would almost always assume it's the former, no matter the language. In German, like English, arbeit is pretty much work, hands down. Going to the pharmacy to get something to me would be "running an errand". I honestly hadn't encountered the word errand in German before, but looking it up I found Besorgung, so "going on errands" would be "Besorgnungen machen". There is also the verb erledigen meaning "to carry out" which I think you could use instead. I haven't used either, so not too familiar with their use.
I think there's greater ambiguity between whether, "he is employed at the pharmacy" (say, as a pharmacist) or "he is a contract worker doing a job at that location dubbed 'die Apotheke'". Personally, I think it leans towards the former. It's unfortunate "Er arbeitet in/bei der Apotheke." wasn't used instead to clear up any ambiguity, but once again, take all this with a grain of salt. This is just translation without context, and unless you're doing the stories, sometimes it's hard to attach a singular meaning to some of it.