vinay you can use either the CPU or the XGATE for all of those except item 3) because the XIRQ goes directly to the CPU.
The choice of which core to use depends on your software requirements. If the CPU is heavily loaded doing some complex algorithm then you probably want to use XGATE to handle the interrupts so that they don't go to the CPU. You can use the XGATE as:
a/ A DMA moving data from I/O or peripherals to RAM and vice versa
b/ A preprocessor for interrupts that (for example) filters ATD results before the CPU uses them
c/ A programmable machine that can create a "virtual peripheral" where the real one doesn't exist. For example, with your SCI you can write code that makes it look as if the S12X has a buffered SCI that can handle whole messages instead of just one byte at a time.
If you are writing in C you can create all of the interrupts on the CPU as normal and then move one or more onto the XGATE by simply copying the code and changing the interrupt configuration so that XGATE gets the interrupt rather than the CPU.
Ultimately, the structure is up to you. Read
AN2615 and
AN3144 for the overview and practical steps.