This is intentional.
Creating a new PersistenceManager always causes a principal to be assigned to the currently running thread.
The intent is that each DevForce application begins with a login during which the LoginManager computes a principal that is assigned to the currently running thread. The principal is determined securely by code that runs on the server. If you do not implement a LoginManager, the null principal is assigned.
If you do not wish for this behavior, save the value of the principal before creating a PersistenceManager. Then, after the value of the principal is overwritten, restore the value.