First, don't consider yourself a jerk for kicking players that join your table. It's nice that you think that way
, but as long as there is no really good way to start a table "in private", that's the accepted way to say "this table is not meant for you".
The best way I found to do what you want is to create a table, then immediately add a bot to it. That removes the table from the view of almost all players, because now they need to check "Show bot games" in the table view, which nobody who looks for a human opponent does.
So your friend sees that you are at a table in the matching tab and joins you. They are now a spectator to the match (because it is a 2-player table, and both spots are already taken, by you and the bot). Now your friend needs a little patience.
There is a "Play" button on the lower left of their table view, but they should not press it yet (otherwise things get screwed up). They need to wait until you, after seeing your friend as spectator at the table, have kicked the bot. They see that because the bot simply vanished from the players list. If they press the "Play" button now, they get added to the players list.
Now both of you need to press "Ready", maybe after chaning some more table option, and have fun playing.