A. The main difference is that Nagios is *just* an alerting system - and because it's not designed to work specifically with Postgres, it's not very efficient in the way it collects monitoring data. To give an example, for every individual metric that Nagios monitors on the database server, it'll run a query, whereas PEM is designed to collect as much data as possible - for example, it'll collect the stats of all tables in a single query, instead of one query per stat, per table.
PEM also has: a) Storage of historic metrics data, with predictive reporting to allow you to look at previous performance and predict what things will look like in the future, b) a SQL Profiler to help track down queries that aren't performing optimally, c) all the tools and features of pgAdmin, with a centralized directory of servers to help teams manage large installations effectively, d) Postgres Expert to check that server configurations (schemas, security, key parameters) look sane, and haven't been misconfigured, e) a Log Manager for configuring logs en masse, and much more.
Finally in addition to SNMP and SMTP alerting Enterprise Manager's alerting mechanism is a little more flexible than Nagios as it adds the concept of alert levels, allowing you to specify low, medium and high alert levels, rather than just alert or not alert like Nagios (technically you could do that in Nagios by creating multiple identical alerts with differing thresholds, but that would be difficult to manage).