I am not sure what do you mean by "if we do not manually send a protobuf msg to grpc and only call APIs generated by gRPC", but max frame size is applied to all HTTP2 frames regardless (like you said, it belongs to the transport layer), so there shouldn't been any distinction between what users put or use. grpc will take whatever the user want to send, and create frame(s) for the data. If the data is larger than a single frame (4MB) can contain, then multiple frames will be created to transmit the data.
And in most cases, there is no need to change the default max frame size. But if you want to optimize your application's performance, you may want to experiment with different values max frame size depending on the message size you are transmitting.