Why is there a difference in the character limit for VARCHAR2 in SQL and PL/SQL?
It is just a fact of life.  Different history, different beliefs, different goals.

Your might find this post on PL/SQL and its goals helpful in seeing some of the differences:
http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/03_types.htm

It amusingly starts with: 


  Like--but oh how different! --William Wordsworth


There are ANSI Standard data types, but I believe that VARCHAR2 is an Oracle standard, not a part of ANSI.  It appears from history that Oracle's VARCHAR2 was designed to overcome the limitations of their earlier VARCHAR implementation.  

Having said that, practically every SQL dialect has some unique datatype that is not accepted by all other SQL dialects. (I primarily work with MS SQL Server, but do at times need to absorb data from other systems.)

Fortunately there are a number of online resources to help you in mapping one datatype to another as you move between the products of multiple vendors.  Usually it is not too difficult.  Note: it is not only strings (such as CHAR,VARCHAR) that can have conflicting definitions.