Matt is correct, preupdate rules are triggered whenever an entity with a rule is committed using a bundle and the CONDITION evaluates to true. The API's use bundles to do database updates so the preupdate rules fire in a similar fashion to the internal updates.
Note: if your rule depends upon the context in which the update is running, there will be differences between PCF updates and API updates, i.e. the currentUser can be different.