Many ways to skin this cat.
1.If you're form has different views, only put the applicable button on its correct view. Use a workflow to strip permissions where appropriate. Thus an Initiator could go into a form when it's at the Manager stage.
2. You could put each button into its own section and using rules hide the button depending on who is looking at the form (for this you can compare username against a manager field or connect it's viewing rights to a list.
It really depends on how the form is going to be used, I've found which way I go about this. i.e. if the manager spots an error or something, who updates the form, the initiator or the manager?