Just a couple extra comments:
(1) In your replacement rule, you are duplicating the Plus. So, using M Rogers suggestion, the following
Exp[a + b] /. Power[E, Plus[a_ + b_]] :> HoldForm[E^a*E^b]
can be simplified to
Exp[a + b] /. Power[E, a_ + b_] :> HoldForm[E^a*E^b]
or
Exp[a + b] /. Power[E, Plus[a_, b_]] :> HoldForm[E^a*E^b]
(2) You said you "want to do further calculations with the powers of variables separated ... using Part afterwards". If this is your approach, you can almost certainly do those calculations directly on your original expression, E^(a+b). For example, while you certainly can do things like this:
HoldForm[E^a*E^b][[1, 1]]
(* E^a *)
you can also do things like this with your original:
Exp[a + b][[2, 1]]
(* a *)
Extract[Exp[a + b], {{1}, {2, 1}}]
(* {E, a} *)
(3) If it's relevant to your situation, you need to be careful about other automatic transformations that are done on expressions independently of the evaluation process. Specifically, things are put into a canonical form which often relies on sort order. For example:
Exp[b + a] /. Power[E, Plus[a_, b_]] :> HoldForm[E^a*E^b]
(* HoldForm[E^a*E^b] *)
Notice that the order of the exponents has been reversed (sorted). This is because Exp[b + a] is immediately transformed to E^(a + b) before the replacement rule is evaluated. In general, one must proceed very cautiously if one wants to manipulate expressions structurally as part of one's own evaluation process. Generally it's safer to capture one's semantics explicitly rather than fight with WL's expression handling.