The reason is that Frames aren't only designed to be used with Kuix. I'd like the concept of Frame and I would add the possibility to use it not only to intercept Kuix user actions.
The power of frames is to be able to hide or not special message (event) process in a very simple way. For example, it could be possible to use the frame concept to process Socket or Bluetooth binary réception. In this case the identifier could be an Integer or what else, it depends of the implemented protocol.
In Kuix use, String are needed, because of the XML origin of the actions. But for pure java use we can save memory by using smallest objects.
In an ideal way we could imagine to change te signature to Frame.onMessage(Object identifier, Object data). And in this case data could be a String[] (Kuix use) or byte[] (raw data extract from a socket or BT connection) or everything that could be an Object.