Is there any justification for this style (or lack of it)?
There are subtle differences to the two methods you presented. For example, give a class "myClass":
myClass B;
myClass A = B; // make an instance of A based on B
The above calls the copy constructor for A.
myClass B;
myClass A;
A = B; // copy B to A
The above calls operator= for A.
So they do different things. Admittedly for simple types there won't be much, if any, difference.
I think there is an argument for separating out the declaration from the initialization. Example:
int i = 10;
while (i--)
{
// do something
}
Later on you need to do that again (in the same function) so you copy and paste:
int i = 10;
while (i--)
{
// do something
}
Oops! Duplicate declaration of "i". Now if the declaration had been on its own line you just copy the initialization downwards and not the declaration. Or you fudge it like this for the second loop:
i = 10;
while (i--)
{
// do something
}
Now one loop has the declaration and one doesn't which looks asymmetrical.