Are there any options that are less finicky that the two above? Since the character controller is tied to the move/simple move action I believe it's important to make jumping as simple as everything else within Playmaker.
I'm not sure if this is what you'd be looking for but for the system that I've been working on recently I've had to re-roll my own physics system in a sense (mainly because when jumping I felt that the physics was a little too floaty and didn't give me the level of responsiveness I really wanted.)
I'm not sure how easy this would be to apply to your own system but what I did was as follows. That said, keep in mind that this is for a side-scroller so I only needed to input one axis for the horizontal movement and limited vertical movement (such as when the character is on a ladder.)
First off, I scrapped the character controller entirely and used only a rigidbody. Not set to kinematic or anything but I froze the rotations in all the axes other than the one that would let me rotate the character.
Secondly, I took the inputs for both vertical and horizontal and fed those into the appropriate variables that I'd use to control the character. Right as things are now since I have both the horizontal and vertical movement controlled in separate FSMs I stashed them in two floats. In the "input monitor" system I have it always getting those two with the "Get Axis" action and feeding them to the appropriate other FSMs with the "Set FSM Float" actions set to every frame (since the "Input monitor" system is always in the idle state... because, well, it's always getting that data from the player inputs.)
In the horizontal movement I've got a basic float compare taking that horizontal axis information being fed to it from the "Input Monitor" system and always testing... If it's in the positive, I tell it to move the character to the right... if negative, to the left. In there I use the "set velocity" to the object. That gives me the movement.
To get to the jumping, I have a basic calculations for gravity... Since it has a rigidbody and I'm making my own gravity solution I tell the rigidbody not to use it's own gravity. And in each active state in the vertical where I want it to have gravity affect it I have a three actions (in order...)
Get Velocity. Getting the vertical (Y) and storing it in a float variable.
Float Operator. Taking the vertical velocity variable and adding the gravity value. The gravity value is a negative float value... And this does require a little tinkering to be sure you have the value you want to get the responsiveness you want... I do that and then put it in the same vertical velocity value (I don't know if this is the best way to do it though as this system that I'm working on is still relatively new-ish and I'm learning a fair amount as I go.)
Set Velocity. Simply take the vertical velocity that was extracted and run through the operator and re-applying it to the character.
This requires a collider, of course... because when you remove the character controller component it takes the controller itself off.
And to make it jump... When I enter into the "Jump" state I simply put in a new value for the vertical velocity and use "Set Velocity" to do it... And yes, I also still use the three gravity functions listed previously... You could have it exit that state ASAP once you've added the velocity to make it jump and of course this does require some fiddly work to get it to the level you'd want of it... But since you have far more control over things like how strong the jump will be, how strong the gravity will be and all that, you can get a lot more responsiveness.
This does, however, run on the "Every frame" mechanic so if you have a LOT of systems that are working and pulling the framerate down to an abysmal level this might not be the most ideal way of doing it... If that is the case you might want to make each state that uses the gravity to instead of using the "Every frame" option you could then instead put in a "Wait" action with real time and set it to the iterations you want... So, maybe a time of "0.01" or something... That's pretty fast though and it kinda requires even more finicky bits to get it to work just right (and I'm sure there's a far more elegant way of doing it) but that's been working somewhat for me.
Given all that, however, it does require some additional work... So, if you want to confirm that the character is grounded you'll probably want to create a set of raycasts that go only a small bit down from the characters feet to ensure that they're connecting. But that's not too hard to do, just make sure that you set the viewline distance to be far enough to only extend a little bit past the character's feet.
And if it has a collider and everything that it's going to interact with has a collider, that might be a way to prevent it from passing through things as long as it's velocity isn't blazingly fast (I've tested this and if the object is moving fast enough the collision systems might not be able to work fast enough to catch it... Since the collision system seems to work like a force field as opposed to a mass... The way I view it is like it's not a mass at all but more like a paper thin shell that only pushes outwards... So, if it breaks through that shell, it doesn't know what to do with it while it's within the system.
Does any of this make sense? I know it's kinda detailed on paper but in practice it's actually fairly simple. (I'll get a web-player build started to show you the system in action... It's for a side-scroller though but I'm sure the concept can be extended to incorporate a full XY planar style movement.)