There is no absolute best practice. Use a bidirectional association when you want or need a bidirectional association, and a unidirectional when you want it unidirectional.
Some associations should not be bidirectional. For example, if an address can be an address of a user, or a consumer, or a vendor, or a contact, or whatever, having a reference to each of these entities in the address (all null except one) isn't a wise choice.
Other than that, when two entities are tightly coupled, I generally make the association bidirectional to ease the development and the writing of the queries (as the Hibernate documentation says).
I also agree with the SO answer you linked to: be careful when you have a One to Very Many or Many to Very Many association. But this association, if it's not the owner side, can also stay completely private to the entity (and thus never be loaded), just to help writing queries, but forbidding initializing the very large collection.
To have no problems with JPA, you "just" need to understand and think about what happens under the cover. When developing, turn SQL logging on and look at the queries being executed.