Do pool servers check for duplicate shares?
Yes, it is absolutely done. A well known exploit in early stratum mining pools was that they used string comparison when looking up duplicate submissions, where nonce aaaaaaaa and Aaaaaaaa are identical but weren’t caught by the duplicate submission check. You could submit a share up to 2**8 times if you were lucky and got an all alpha encoding nonce, and thefts from pools using this exploit did happen. 

You only need to store the work ID and the nonce, and pools can tune the client to only be submitting a share every few minutes if they choose. It’s not a particularly intensive task to keep tack of submissions.