1. Not sure I understand your setup concept.
What is your setup? Lots of constants or a lot of code? Code banking is actually quite efficient with the banked memory model. Data (constant) paging has more overhead.
In the end the setup which works best for you depends most on your needs, having a single huge array is different than having many small objects, for example.
2. The pragma CODE_SEG without qualifiers only changes into which section the code gets placed, not how the code itself. It wont cause functions to use the call/rtc calling convention unless you use the __FAR_SEG qualifier as well inside of the same pragma (or the memory model uses far functions by default).
3.Interrupt handlers must be allocated non banked,which is not the default in the banked memory model.
Place the handlers into an area allocated non banked with an explicit #pragma CODE_SEG.
4. Code cannot change PPAGE while running on an memory area controlled by
PPAGE. However this is different than using the LAP access method of the S08, that can be used from anywhere. So it depends on how you access your data. As far as I know (not that much) is that the S08 compile is using LAP access to access banked data. If you have you own access routines, you can obviously choose how to access your constants.
5. I don't have that here. Note that when using LAP access there is no differentiation in between banked and non banked. Also non banked flash can be accessed in the banked window as well.
In the end, I don't think that banked access is much different from non banked in respect to flash programming.
Daniel