That's pretty similar to how I approached the issue. It worked absolutely fine until i started making the platforms tile-based. Then I add some really undefined behavior that I never got around to fixing.
Interestingly, for me, this is what actually solved problems with tile-based colliders. I guess the difference in outcomes comes from some other details of implementations.