Tweens are going to happen around the same time as _process, where your raycast is happening in _physics_process, the clipping may be because the movement (tween) happens after the raycast so you’re always one frame off of being on the ground. Moving the raycast to _process may help but I’m not sure if tween happen before or after _process.
I’d advise to avoid using tweens for movement, they are great for fire-and-forget animations but spiral out of control, especially for essential gameplay functions. For grid-based movement it may be best to have a “target_position” variable that can be snapped and updated easily, then your player can move towards it. If you want to get the most out of a CharacterBody3D use move_and_slide(), that would include it’s own built-in collision detection and floor snapping rather than wrangling many raycasts.