I prefer to add a button near the portal for adding a new record "on the far side" of the join table. It can do something like this to add a new record to Tags:
Set Variable [$BookID ; value: __pkBookID ]
Go to layout ["Tags" (Tags) ]
Set Variable [$TagID ; value: __pkTagID ]
Go to Layout ["jBooks_Tags" (jBooks_Tags) ]
Set Field [jBooks_Tags::_fkBookID ; $BookID ]
Set Field [jBooks_Tags::_fkTagID ; $TagID ]
Go To Layout [Original Layout ]
If the only other field to fill out for the new record is the text field with the tag text, and you then have that field in your portal row, you'd complete the operation by entering this text into the field of the new portal row that this script caused to appear in your portal. In other variations of this method, you can open a custom dialog, a new window, a popover, or just pause on the tags layout in order for the user to complete the data for the new record. The popover makes a very slick option for this. You can even set up the popover with a two pane slide control where panel 1 is a selection portal for finding and selecting a tag while panel 2 is a "new tag" panel with appropriate fields and scripting.
It is also possible to add what I call "action values" to your pop up menu of tags. These appear above a single value divider line and a script that is performed when you select a value from the list checks for an action value and does the action (create and link in a new tag record) if that was what the user selected.
For examples of field based value lists that include action values and examples of selection portals located inside popovers, see: