Hi,
"Why would I use product X instead of product Y?" is always an interesting question. You will most likely get as many replies as there are users.
Both libraries you asked about are stable and equally as fast. Getting into a pissing contest over features is irrelevant, because more often than not you will not need every single feature offered by an SDK anyways. I would suggest:
(1) Design your game on paper. List all the features you need from a graphics library.
(2) Check if those features are supported, or will be supported within the close future by each library.
(3) If a feature is not supported by one of the SDKs, check how difficult it would be to add it yourself by expanding the SDK.
Both libraries use the concept of "surfaces" when working with pictures, buffers and displays. The only major difference between the libraries that comes to mind are the way parameters are managed for each operation.
In PocketFrog, you:
(a) Create an object from the Surface class
(b) Create a separate rasterizer object and connect it to the surface object using SetRenderTarget().
For each operation:
(c1) Set parameters such as "all future operations will use an opacity of 50%" to the rasterizer object.
(c2) Blit, draw lines, etc using the rasterizer object.
In GapiDraw, you:
(a) Create a surface object from the CGapiSurface class
For each operation:
(b1) Create a struct containing the parameters for the next operation
(b2) Call the blit, draw line, etc operation using the surface object, sending the struct as a parameter.
Some people do not like to use a struct in every single operation, and some do not like to use rasterizers. Once you have decided what you like to use, check the feature list for that SDK and just go for it.
[Updated] Fixed the description of how rasterizers work in PocketFrog.
/Johan