Originally I overrided the ScheduleCarpool when it wasn't showing up at all to figure out what was going wrong, but I have since removed that, to just use the base one and the same thing happens.
I have been testing in a custom world, but this also happened in Sunset Valley. It's definitely not a problem with routing/parking spots because when the sim is in the car, and I direct it to the work lot (or any lot for that matter) the car will drive with my sim to the work lot and drop her off there. It only seems to teleport when I don't push the interaction, and my sim is kicked out the car when there is no further interaction for her to go to a lot.
I think the issue is more that for whatever reason GetInteractionToTakeSimToWork() isn't being triggered when the sim is in the carpool, at least if that's what's supposed to happen. The sim is automatically pushed to get in the carpool, but after that there is no automatic VisitLot interaction being pushed, and the function isn't even being called there because I don't get a debug message at all