I believe that a value object should be referred by its value because that's what makes it unique, notneither a GUID. However, this doesn't mean you can't use "local" ID's to differentiate between Choices of nor a Polllocal ID.
// 1st poll (GUID = 1)
Poll poll1 = pollRepo.find(1);
// 2nd poll (GUID = 2)
Poll poll2 = pollRepo.find(2);
// 1) you can refer to a choice by its value
poll1.voteForChoice("Firefox");
poll2.voteForChoice("Chrome");
// 2) or if the text of a choice is too long
poll1.voteForChoice("B");
poll2.voteForChoice("A");
// 3) you could also use a numeric "local" ID
poll1.voteForChoice(2);
poll2.voteForChoice(1);
I think all of the above are pretty much acceptable and don't violate DDD principles.
pollpoll1.voteForChoice(new Choice("Firefox"));
poll.voteForChoice(new Choice("A"));
pollpoll2.voteForChoice(new Choice(1"Chrome"));
So, with the above caveatsit seems like you can use the first two signaturessecond option for the voteForChoice method whichever suits your model best. The first one uses ID which suggests that Choices be modeled as entities. The third one feels wrong like a leaky abstraction and breach of encapsulation. The forth one is wrong because of using a repository for a value object.
I know I've made it even more confusing for you, but the thing that I want to emphasize is that you have to decide for yourself what kind of domain model you need. My answer was based on the assumption derived from your question that value objects is what you need.
UPDATE 2
It turns out that according to Eric Evans when you tempted to create some sort of identifier for a value object even if it's a local one you should consider making it an entity instead.