Yes, you could see different behaviour here.
If the object hasn't been committed before (isNew()) I expect all database retrieves associated to the object will be empty.
If the object associations have changed, these changes will also not show up in the BCO when using database retrieves.
Retrieve by association will probably give you the best results in this scenario (unless you are interested in seeing the pre-change state)