I'd say there's a difference between a label and a job specification. If you get to choose your own title, it's meaningless.
You tend to specialize in that which you do for your 8+ hours a day. I personally wouldn't call someone a front-end developer unless they are very specialized (to the degree that they understand the internals and are writing custom controls for the stack).
This doesn't imply that someone can't be specialized in multiple fields - in the end you are just fulfilling a specific role. I personally believe a team works well when everyone is capable of doing most things (from doing front-end dev, back-end dev to gathering requirements and communicating with the client) and then having specializations.