I have found that using modules and submodules provides the best user experience. It also helps a lot with method discovery. Here is a thread I posted about it.
I plan to write my packages this way moving forward. Here is my latest package using this approach for inspiration: AISCSteel.jl
And with your RationalFunctionApproximation
being too long, you can always do:
import RationalFunctionApproximation as RFA
In fact I do that with my package:
import AISCSteel
import AISCSteel.Shapes.IShapes.RolledIShapes as RIS