In my vision this would be an option that you could toggle via config, or perhaps select at the start of world creation. With the option enabled, Pokémon would no longer be kept in the onscreen UI that is currently the case, but instead would be kept in physical Poké Balls within the player's inventory.
The number of Pokémon within a player's inventory would be capped at the usual 6, with any additional acquisitions being sent to the PC. This could also allow for an additional config for the maximum amount of Pokémon present in a player's inventory for those that wish to change it (I would not personally use this feature, but I'm sure there are those who would love to spam caught Pokémon just for some chaos).
Poké Balls containing Pokémon would be named to the caught Pokémon, and if possible, contain an overlaying image of the Pokémon's sprite over the Poké Ball allowing for easy identification.
The Overlay UI as well as the inventory UI would remain the same, allowing for the same management of Pokémon order and items as it is currently. The only potential struggle would be tying the Pokémon shown within these UIs to the Poké Balls containing Pokémon within the player's inventory.
When a Poké Ball containing a Pokémon is used, the Ball will be thrown as is done currently, and once the Pokémon is released, the Ball would return to the player's inventory (to avoid frustration, it would prioritise the last slot it was held in). The empty Poké Ball can either have an opened sprite, a changed name, or a coloured background (like the currently used aqua) to indicate that the Pokémon is out of its Ball. Using the empty Ball again will simply return the Pokémon.
If a wild Pokémon or Trainer initiates a battle with the player, the first Pokémon in the player's party (via the current inventory UI as stated beforehand) would be sent out.
Why Would This Be Used?
There are two main reasons this feature would be used, the first being immersion. Pixelmon currently has done a fantastic job at immersing the player in a vast open-world full of Pokémon. However, it always felt odd to me that once we catch a Pokémon with a Poké Ball we held in our hand, that we can never hold that Ball again. I simply believe that it would add to the immersion to have our Pokémon in our inventory so we could hold their Poké Ball in our hand before we send them out to battle.
The second reason is the main reason I'm suggesting this, and that's for better Vivecraft compatibility. Currently, playing Pixelmon in VR with Vivecraft doable. You can set most of the important commands such as Next/Previous Party Pokémon, Send Out, etc, to the radial command menu Vivecraft provides, but it isn't the best solution. It can be very difficult to aim a thrown Pokémon at a target, especially if they're flying, due to needing to position yourself at an offset to where you want to throw your Pokémon and the slight delay it takes to use the menu. There are also numerous other little things, but they could all be fixed if your party was contained directly on your hotbar in their Poké Balls for you to use. It would also be incredible to actually hold your companion's Poké Ball in your hand as stated before. (Having Poké Balls be 3D in your hand would also help massively towards the immersion, though it's understandable if this isn't possible).
Thank you for taking the time to read this. I very much hope that more people will want to see this included so that I, and hopefully many others, can enjoy this incredible mod just that little bit more.