When you need the bind a specific entity to a specific archutecture. I have never used one (and its one of those areas people dont really understand and hardly ever use)
Why not have both on the same file in the first place?
The architecture is optional when only one exists. The architecture name can't be a generic (unless this was changed). This style is becoming more popular as it allows libraries to be used effectively, and removes then need for component declarations.
Multiple architectures are rare outside of simulation.
This is just direct instantiation that has been around since VHDL '93. It allows you to avoid the use of components, potentially speeding up debugging, as you dont have to wait for the map stage to see that a component doesnt match an entity.