Metalink note 415385.1 explains the reason for something queer which I observed during an R12 multi node install. All middle tiers run all services irrespective of what you have defined for them. Here's a copy paste from the relevant section in the note, which explains why this is happening:
In R12, the concept for Applications Nodes has changed. When installing R12 with multiple nodes. all the nodes are now set as 'Y' in FND_NODES.
This occurs because in R12, concept of unified APPL_TOP is introduced which means everything is laid down on all servers.
From the APPL_TOP perspective, all the servers on a Multi-node environment will have the same files and can now potentially start any service if needed. In some cases, additional configuration will be required before this can be done since there can be profiles, etc associated with each server.
For R12, the only difference between the servers, are the Services that have been activated on each node.
The services are identified by the variables on the /service_group/ section in the Apps Context File:
Root Service Group : s_root_status
Web Entry Point Services : s_web_entry_status
Web Application Services : s_web_applications_status
Batch Processing Services : s_batch_status
Other Service Group : s_other_service_group_status
Depending on the value of these variables (enabled or disabled), adstrtal.sh / adstpall.sh will only start/stop the services associated with them, ignoring the rest.
For example, if a node has only /s_batch_status/ "enabled" and the rest of the services are disabled, when you run adstrtall.sh on that server it will only start the Concurrent Managers and the TNS Listener for Apps.
NOTE: If you experience the problem where all of the service_group variables are enabled on all application tiers make sure you are using the latest version of the Rapid Install StartCD (18.104.22.168) shipped with Patch 5766801.