If I wanted users to be able to post comments on content which is stored within different tables, what would be the best way to do this?
By creating an additional table for comments on each type of content. For example;

Or, use one table for comments, and use multiple join tables. For example;

Or, simply add a foreign key for each table into the comments table?

I would just add a foreign key for each table into a single comments table. If the comments are in the same format for each of the three, it will make things much easier for you in the long run. It is worth mentioning that this means you will have to have nullable foreign keys in the comments table.
The first approach you described would only be used if comments for a page are different than they are for a post. Otherwise, it is much simpler to just have one comments table.
The table in the middle would only be necessary if you want the same comment to be posted across multiple pages (which I doubt you want). This is called a many to many relationship, but you are describing a one to many (one page, post or profile can have many comments)