Hi James,
Firstly it may be worth checking if Google is actually ranking every version of a page, they will exclude some of the variations if they see it as duplicate. Try doing a site search in Google e.g.
- Try site:domain.com Las Vegas Vacation - See if the vacations page is listed
- then try site:domain.com Las Vegas Holidays - See if the holidays page is listed etc.etc.
- If you find that you only have one page listed for Las Vegas then you could have a duplicate content issue.
In terms of the hidden text I don't think the search engines are quite as skeptical of hidden content anymore because most sites these days are heavily reliant on hiding and showing sections through JavaScript. it would be a problem if the hidden text was unrelated to the rest of the page content or was 'keyword stuffed' but an extra information section should not be a problem. The important question is how is the information loaded? Since search engines do not use JavaScript you need to make sure that the info paragraphs are loaded first and then hidden so they are part of the HTML. If your info section is empty and then the text is loaded into the container when you click a button then they will not see this text.
There will be many different opinions but if it was me I would only have one page for each location, try and use all the synonyms in that page and then vary the anchor text when creating backlinks to the page. Google is clever enough to understand synonyms so you don't really need to have different pages for them however, I'm sure that there are many people who have had success with this strategy.
They always say that a key guideline is to build your website for users, not search engines. So is it useful to the user to have many versions of each page? Probably not, and it might confuse them. It may also confuse the search engines as they will not be sure which version is the important one and could end up showing only one in their rankings.