If this were a sql server question, then I could tell you that this is by design. A trigger will be executed regardless of the number of rows affected (including zero) and regardless of whether any column in any of the affected rows was changed. I will also point out that PB was designed to work within this design by the inclusion of the [where clause for update/delete] option in the update properties of the datawindow. The idea is that you avoid actual row updates (in the table) where nothing has actually changed (and it also supports collision avoidance).
Based on the history, I would assume that Sybase works exactly the same.