if you had 2 mafia wins compared to someone who had two town wins my assumption is that the mafia wins would weigh significantly more
That's correct. Keeps total elo balanced, and also I think it's more telling how you perform when there are fewer other team members to dilute your ability. This kind of expects that you perform similarly as scum and as town, which feels necessary if we're going to have a single elo score. It may be an oversimplification, but if I need to change the system later, I can retroactively rescore everyone so it's consistent.
a player's Elo rating is equivalent to their expected winrate against a player whose Elo rating is a certain amount relative to theirs, e.g., 150 points lower or 300 points higher. Since Mafia is a team game with a large random component, I doubt that any player will ever have a win-rate above a certain percentage that's nowhere close to 100%.
Elo here is actually an estimation of the winrate of a team with an average elo of some value. So if I'm 1600 and you are 1500, it estimates that a team made of me and other people at my skill level would beat a team of you and others at your skill level a certain amount.
So isn't the possible Elo range effectively restricted to a few hundred points on either side of 1500?
I'd expect so if opponents are just random. However, once the spread gets large enough, we may start having people play rated against others with similar elo. That could allow for a bigger range of scores. There's also a decent amount to be gained by carrying a team of others with low elo (which allows your elo to rise faster). But your team is basically random, so you should expect to be paired up with people of average elo within the group.