Liferay portlets can allow multiple "instances". Will these instances correspond 1:1 with Java class' init()
method calls?
No. You should assume that there's only one instance of your portlet class ever for every entry in portlet.xml.
Any member variable of a portlet class that is not a constant is typically a sign for an upcoming bug or race condition.
All the dynamic state for a portlet is coming in through the various Request and Response parameters. If you ever find some implementation where you actually find portlet object instances per instantiated portlet (web) part, this is an implementation detail and will not be guaranteed to work on different versions of the same portal or on any other portal.