hhmm i'm only guessing but would it be correct that the probable reason why you can't ping from an external server to an internal host is because of the routing involved? ext. server uses routable ip addresses while internal host under a LAN uses private ip addressing schemes which are non-routable.
usually, internal hosts within LAN "hide" behind a public ip address via their gateway wherein most of the times involves the application of NAT (Network Address Translation). unless specified, pinging from ext server to an internal host would be difficult as it does not know where to send packets to. while pinging from the internal host to the ext server would be possible as it knows where to send/receive packets via the gateway.

Yup, I think your right. When an internal host pings the ISP, NAT gives the packets a different source IP address and sends them, so the ISP ruoter won't have trouble sending the replys back because it's the destination IP is already on a connected network.

But when the external hosts try to ping the internals, the ISP router will not know what to do with these packets becouse of the destination IP address that are not part of the routing table subnets of the ISP.