Answering my own question...
There is a structure that has the endpoint configuration and the size of the buffer is part of it. I am presuming that this only works for manual allocations where the endpoint buffer will be the same size as the max packet.
For my second question it's a bit of a nasty answer.
USBFS_LoadInEp() appears to allow a size of anything up to whatever space exists from the start point of your endpoint buffer, through to the end of the 512 byte total space. It will silently reduce the length down to this size and not tell you ... and if you want to take advantage of this then you will have to calculate the size yourself.
I've only just started experimenting with USB on the PSoC, and maybe it's because I'm not too familiar with the principles, but the API seems pretty awful compared with many of the other components.