What is the difference between default route, partial and full routing table for a BGP session? Does it affect the routes bird (or another BGP client connected to the session) sees?
A default route is the route that will be used if there's no other route that matches the destination in the router's forwarding table.
A full routing table is a table which contain all the routes the BGP neighbor is aware of.
A partial table is a table filtered (with route map, community...) so that only some specific routes are exchanged.
If you are connected to the Internet through a single ISP, a default route is enough, since there's only one possible path, so there's no point in having 500,000 routes in memory that all point to the same next-hop.
If you are connected through several ISPs with BGP and want to always use the "best" path, then a full routing table makes sense. In this case the default route will (almost) never be used since the router knows every possible destination with a specific route.
However a full routing table take some memory and also more CPU power (and time) to perform a lookup for each destination among the 500,000 known routes.
When the vast majority of your traffic will take one path and only some specific destinations will take another path, a partial table is more efficient.
A default route is the same in every routing table -- it is the route of last resort, when no other route matches.
Since many organizations have only a single connection to the Internet, a default route is all that is needed to route to the Internet. In other words, if the destination is not in the local network, the default is send it to the Internet via the service provider.
If an organization has more than one ISP, they may want to choose the "best" ISP for the destination. A partial routing table usually includes all the routes for customers of the ISP, and a default route for everything else. The idea is the ISP is the best path to their connected customers.
If you have several ISPs, you can also receive the full Internet routing table, and use that to make your routing decision. The downside to receiving the full table is that it contains over 600,000 routes and therefore requires lots of memory in your router. It also takes a while to download and process the full table.
Full internet tables are not needed if you're not a provider. Default + Partial is more than you should ever need. Best path out on the internet only differs by a few hops between major providers. You can do whatever you want, but it's just not needed even if you have the memory in the router. Additionally, if you are doing iBGP sessions and more than one BGP path, your router doesn't just have 800k routes, it has that x all best paths. And as Ron stated, time to process and download, and if you have up/down events, you're delaying convergence.