Dear osoraku,
I'm a bit unclear what you are asking, I hope the following answers your questions:
History:
The USB stack on the JB16 is basically that used on the original TBDML - I have no idea what its origin is. It originally was available in a couple of flavours - One where all the USB trafffic was on EP0 and another where the BDM stuff was on additional endpoints. The second version is no longer used since it breaches the USB protocol (packet size is greater than that allowed on a low-speed device) and was not useable on Vista or later.
The stack on the JMxx and JS16 devices was written from scratch by me but obviously influenced by various example codes available (though I have carefully avoided looking too closely as the Freescale examples.)
I felt uncomfortable in using the Freescale stack on a GPLed device since I have no idea what the license ramifications would be.
I would NOT recommend the stack for use with a commercial product. It has some know minor bugs (at least known by me) and is limited by my (limited) understanding of the USB protocol and the USB hardware of the devices.
Use of Endpoints:
I'm puzzled by your question. On the JMxx/JS16 devices EP0 is used (mostly) for the enumeration etc. The only BDM functions are associated with EP0 are the ICP_GET_VER, CMD_USBDM_ICP_BOOT and ALL transactions when in ICP mode. EP1/2 are used for bulk endpoints for BDM traffic. This seems a sensible choice to me.
I can't offer any opinion on the Freescale medical stack as I have not used it.
bye