That was a simple example, but there are cases where many items might be different. I have done both approaches, but to tell the truth I have felt using initialize and assigning components to the "this" scope leads to better encapsulation and easier invocation of methods referencing said components.
Is there a performance overhead with it or is it just a preferred coding practice?
It doesn't lead to handling anything dynamically since it is only invoked once at instantiation. It can lead to performance issues if these classes are then extended. Extension of classes like this in general becomes very difficult.