Apologies for the long reply but I wanted to give as much information as possible to help answer the question.
There isn't a strong philosophical argument behind the choice of python specifically other than that we wanted a widely used scripting language for extensibility of code.
We use python wherever we want to allow and encourageusers to customze the functionality of Intellipad. Commands can be tweaked or completely rewritten. As an example if you wanted to integrate intellipad with a source control system like TFS or git, you could add some commands in python to provide the functionality you needed. You could add menu items by editing the menubar xcml file. You could even adjust the behavior of the open and save commands if you need to.
We also wanted to show examples of how to test things in intellipad so we ship the unit tests for the python code as python code as well. Hitting Ctrl+R,A will run all the tests or using the Test(test_name_prefix) function in the mini-buffer you can run a subset of tests.
Using the /coverage command line option, you can enable python code coverage (at the function level) and run tests. You can then see the functions that have been covered by opening a python file.
We have extensions to MEF that discover commands and test written in python and add them to the catalog. In theory you could write any Intellipad extension component in python but we've found it to be mostly useful for commands and tests.
Lastly we use python as the language in the mini-buffer, our command window. You can edit minibuffercommannds.py to add new functions in there.
-hoop
Hoop